Changes Lat & Long Binary variable to be 32 bit integers representing micro-degrees.

Fork of lib_gps by wayne roberts

Revision:
1:2f5fbb33ae8b
Parent:
0:0bd73064b7f6
Child:
2:b531881123bf
--- a/gps.cpp	Wed Mar 18 00:55:27 2015 +0000
+++ b/gps.cpp	Fri Mar 27 00:41:33 2015 +0000
@@ -1,6 +1,9 @@
 #include "mbed.h"
 #include "gps.h"
 
+#define LAT_UNFIXED     0xaaaaa9
+#define LONG_UNFIXED    0x355554e
+
 const char NmeaDataTypeGPGGA[] = "GPGGA";
 //const char NmeaDataTypeGPGSA[] = "GPGSA";
 //const char NmeaDataTypeGPGSV[] = "GPGSV";
@@ -18,8 +21,8 @@
 
 GPS::GPS()
 {
- 
-}
+    have_fix = false;
+ }
     
 GPS::~GPS()
 {
@@ -76,6 +79,7 @@
 void GPS::enable(bool en)
 {
     if (en) {
+#ifdef SOFT_START
         /* probably better instead to remove 22uF from GPS VCC */
         volatile int d;
         volatile int i;
@@ -106,12 +110,14 @@
                 asm("nop");
             }
         }
+#endif /* SOFT_START */
         gps_en = 0;
     } else {
         gps_en = 1;
     }
-    //gps_en = !en;
-    //printf("gps_en:%d\n", en);
+    
+    // reset current string index
+    rx_buf_lens[rx_bufs_in_idx] = 0;
 }
 
 bool GPS::enabled()
@@ -280,6 +286,12 @@
         temp = Longitude * MaxWestPosition;
         LongitudeBinary = temp / 180;
     }
+    
+    //printf("binary: %x %x\r\n", LatitudeBinary, LongitudeBinary);
+    if (LatitudeBinary == LAT_UNFIXED && LongitudeBinary == LONG_UNFIXED)
+        have_fix = false;
+    else
+        have_fix = true;
 }
 
 int GPS::ParseGPSData(int idx)
@@ -294,13 +306,19 @@
     }
 
     NmeaString = rx_bufs[idx];
+    
+    if (NmeaString[0] == 'P' && NmeaString[1] == 'M' && NmeaString[2] == 'T' && NmeaString[3] == 'K') {
+        /* anything useful from PMTK packets? */
+        return SUCCESS;
+    }
+    
     fieldSize = 0;
     i = 0;
     while( NmeaString[i + fieldSize++] != ',' )
     {
         if( fieldSize > 6 )
         {
-            printf("gps:fieldSize:%d\r\n", fieldSize);
+            printf("gps parse:%s\r\n", NmeaString);
             return FAIL;
         }
     }