mbed 5.4 with sleep mode

Dependencies:  

Revision:
27:fe3b383dd4ec
Parent:
24:81f5b43a6585
Child:
28:334263983fcd
--- a/main.cpp	Wed Oct 01 09:19:33 2014 +0000
+++ b/main.cpp	Fri Dec 12 07:50:45 2014 +0000
@@ -48,7 +48,7 @@
 #endif
     // Create the modem object
     MDMSerial mdm;
-    //mdm.setDebug(4); // enable this for debugging issues 
+    mdm.setDebug(4); // enable this for debugging issues 
     // initialize the modem 
     MDMParser::DevStatus devStatus = {};
     MDMParser::NetStatus netStatus = {};
@@ -86,7 +86,9 @@
 
         // join the internet connection 
         MDMParser::IP ip = mdm.join(APN,USERNAME,PASSWORD);
-        if (ip != NOIP)
+        if (ip == NOIP)
+            printf("Not joined");
+        else
         {
             mdm.dumpIp(ip);
             printf("Make a Http Post Request\r\n");
@@ -193,25 +195,29 @@
             //printf("NMEA: %.*s\r\n", len-2, msg); 
             if ((PROTOCOL(ret) == GPSParser::NMEA) && (len > 6))
             {
-                if (!strncmp("$GPGLL", buf, 6)) {
-                    double la = 0, lo = 0;
-                    char ch;
-                    if (gps.getNmeaAngle(1,buf,len,la) && 
-                        gps.getNmeaAngle(3,buf,len,lo) && 
-                        gps.getNmeaItem(6,buf,len,ch) && ch == 'A')
-                    {
-                        printf("GPS Location: %.5f %.5f\r\n", la, lo); 
-                        sprintf(link, "I am here!\n"
-                                      "https://maps.google.com/?q=%.5f,%.5f", la, lo); 
+                // talker is $GA=Galileo $GB=Beidou $GL=Glonass $GN=Combined $GP=GPS
+                if ((buf[0] == '$') || buf[1] == 'G') {
+                    #define _CHECK_TALKER(s) ((buf[3] == s[0]) && (buf[4] == s[1]) && (buf[5] == s[2]))
+                    if (_CHECK_TALKER("GLL")) {
+                        double la = 0, lo = 0;
+                        char ch;
+                        if (gps.getNmeaAngle(1,buf,len,la) && 
+                            gps.getNmeaAngle(3,buf,len,lo) && 
+                            gps.getNmeaItem(6,buf,len,ch) && ch == 'A')
+                        {
+                            printf("GPS Location: %.5f %.5f\r\n", la, lo); 
+                            sprintf(link, "I am here!\n"
+                                          "https://maps.google.com/?q=%.5f,%.5f", la, lo); 
+                        }
+                    } else if (_CHECK_TALKER("GGA") || _CHECK_TALKER("GNS") ) {
+                        double a = 0; 
+                        if (gps.getNmeaItem(9,buf,len,a)) // altitude msl [m]
+                            printf("GPS Altitude: %.1f\r\n", a); 
+                    } else if (_CHECK_TALKER("VTG")) {
+                        double s = 0; 
+                        if (gps.getNmeaItem(7,buf,len,s)) // speed [km/h]
+                            printf("GPS Speed: %.1f\r\n", s); 
                     }
-                } else if (!strncmp("$GPGGA", buf, 6)) {
-                    double a = 0; 
-                    if (gps.getNmeaItem(9,buf,len,a)) // altitude msl [m]
-                        printf("GPS Altitude: %.1f\r\n", a); 
-                } else if (!strncmp("$GPVTG", buf, 6)) {
-                    double s = 0; 
-                    if (gps.getNmeaItem(7,buf,len,s)) // speed [km/h]
-                        printf("GPS Speed: %.1f\r\n", s); 
                 }
             }
         }