diff --git a/Adafruit_GPS.cpp b/Adafruit_GPS.cpp index df939f9..b87722c 100755 --- a/Adafruit_GPS.cpp +++ b/Adafruit_GPS.cpp @@ -70,7 +70,8 @@ boolean Adafruit_GPS::parse(char *nmea) { strncpy(degreebuff + 2, p, 4); degreebuff[6] = '\0'; long minutes = 50 * atol(degreebuff) / 3; - latitude = degree + minutes; + latitude_fixed = degree + minutes; + latitude = latitude_fixed / 100000.0F; p = strchr(p, ',')+1; if (p[0] == 'N') lat = 'N'; @@ -89,7 +90,8 @@ boolean Adafruit_GPS::parse(char *nmea) { strncpy(degreebuff + 2, p, 4); degreebuff[6] = '\0'; minutes = 50 * atol(degreebuff) / 3; - longitude = degree + minutes; + longitude_fixed = degree + minutes; + longitude = longitude_fixed / 100000.0F; p = strchr(p, ',')+1; if (p[0] == 'W') lon = 'W'; @@ -147,7 +149,8 @@ boolean Adafruit_GPS::parse(char *nmea) { strncpy(degreebuff + 2, p, 4); degreebuff[6] = '\0'; long minutes = 50 * atol(degreebuff) / 3; - latitude = degree + minutes; + latitude_fixed = degree + minutes; + latitude = latitude_fixed / 100000.0F; p = strchr(p, ',')+1; if (p[0] == 'N') lat = 'N'; @@ -166,7 +169,8 @@ boolean Adafruit_GPS::parse(char *nmea) { strncpy(degreebuff + 2, p, 4); degreebuff[6] = '\0'; minutes = 50 * atol(degreebuff) / 3; - longitude = degree + minutes; + longitude_fixed = degree + minutes; + longitude = longitude_fixed / 100000.0F; p = strchr(p, ',')+1; if (p[0] == 'W') lon = 'W'; diff --git a/Adafruit_GPS.h b/Adafruit_GPS.h index f69837a..4788133 100755 --- a/Adafruit_GPS.h +++ b/Adafruit_GPS.h @@ -119,7 +119,12 @@ class Adafruit_GPS { uint8_t hour, minute, seconds, year, month, day; uint16_t milliseconds; - int32_t latitude, longitude; + // Floating point latitude and longitude value in degrees. + float latitude, longitude; + // Fixed point latitude and longitude value in 1/100000 degrees. + // For example a latitude of 4,767.99916 degrees would have a value of 476799916. + // More precise than the floating point value, but a little more difficult to use. + int32_t latitude_fixed, longitude_fixed; float geoidheight, altitude; float speed, angle, magvariation, HDOP; char lat, lon, mag;