Generation 3 of the Harp project
Dependencies: Servo TMP36 GZ buffered-serial1 chan_fatfs_sd nmea_parser watchdog mbed-rtos mbed
Fork of HARP2 by
Revision 3:9cba44dd2f2b, committed 2012-02-22
- Comitter:
- tylerjw
- Date:
- Wed Feb 22 05:24:47 2012 +0000
- Parent:
- 2:0c9ade531a5b
- Child:
- 4:d47805009bbd
- Commit message:
- 0.2 fixed bugs
Changed in this revision
--- a/GPS/GPS.cpp Wed Feb 22 04:37:13 2012 +0000 +++ b/GPS/GPS.cpp Wed Feb 22 05:24:47 2012 +0000 @@ -51,25 +51,25 @@ // Check if it is a GPGGA msg (matches both locked and non-locked msg) if (sscanf(msg, "GPGGA,%f,%f,%c,%f,%c,%d,%d,%f,%f,%c", &utc_time, &nmea_latitude, &ns, &nmea_longitude, &ew, &lock, &satelites, &hdop, &msl_altitude, &msl_units) >= 1) { - line_parsed = 1; + line_parsed = GGA; } // Check if it is a GPRMC msg else if (sscanf(msg, "GPRMC,%f,%c,%f,%c,%f,%c,%f,%f,%d", &utc_time, &rmc_status, &nmea_latitude, &ns, &nmea_longitude, &ew, &speed_k, &course_d, &date) >= 1) { - line_parsed = 1; + line_parsed = RMC; } // GLL - Geographic Position-Lat/Lon else if (sscanf(msg, "GPGLL,%f,%c,%f,%c,%f,%c", &nmea_latitude, &ns, &nmea_longitude, &ew, &utc_time, &gll_status) >= 1) { - line_parsed = 1; + line_parsed = GLL; } // VTG-Course Over Ground and Ground Speed else if (sscanf(msg, "GPVTG,%f,%c,%f,%c,%f,%c,%f,%c", &course_t, &course_t_unit, &course_m, &course_m_unit, &speed_k, &speed_k_unit, &speed_km, &speed_km_unit) >= 1) { - line_parsed = 1; + line_parsed = VTG; } } if (!lock) { return NO_LOCK; } else if (line_parsed) { - return PARSED; + return line_parsed; } else { return NOT_PARSED; } @@ -139,5 +139,33 @@ if (!lock) return 0.0; else - return nmea_latitude; + return dec_latitude; +} + +float GPS::get_course_t() { + if (!lock) + return 0.0; + else + return course_t; } + +float GPS::get_course_m() { + if (!lock) + return 0.0; + else + return course_m; +} + +float GPS::get_speed_k() { + if (!lock) + return 0.0; + else + return speed_k; +} + +float GPS::get_speed_km() { + if (!lock) + return 0.0; + else + return speed_km; +} \ No newline at end of file
--- a/GPS/GPS.h Wed Feb 22 04:37:13 2012 +0000 +++ b/GPS/GPS.h Wed Feb 22 05:24:47 2012 +0000 @@ -27,7 +27,10 @@ #define NO_LOCK 1 #define NOT_PARSED 2 -#define PARSED 3 +#define GGA 3 +#define GLL 4 +#define RMC 5 +#define VTG 6 /** A GPS interface for reading from a Globalsat EM-406 GPS Module */ class GPS { @@ -47,6 +50,10 @@ float get_dec_longitude(); float get_dec_latitude(); float get_msl_altitude(); + float get_course_t(); + float get_course_m(); + float get_speed_k(); + float get_speed_km(); int get_satelites();
--- a/main.cpp Wed Feb 22 04:37:13 2012 +0000 +++ b/main.cpp Wed Feb 22 05:24:47 2012 +0000 @@ -8,10 +8,25 @@ int gps_message; while (1) { gps_message = gps.sample(); - if (gps_message == PARSED) { - pc.printf("I'm at %f, %f\n", gps.get_dec_longitude(), gps.get_dec_latitude()); + if (gps_message == GGA) { + pc.printf("Responding to GGA message.\n"); + pc.printf("I'm at %f, %f\n", gps.get_dec_latitude(), gps.get_dec_longitude()); pc.printf("%d satelites used\n", gps.get_satelites()); pc.printf("altitude = %f M\n\n", gps.get_msl_altitude()); + } else if (gps_message == VTG) { + pc.printf("Responding to VTG message.\n"); + pc.printf("True heading = %f deg\n", gps.get_course_t()); + pc.printf("Magnetic heading = %f deg\n", gps.get_course_m()); + pc.printf("Speed = %f knots\n", gps.get_speed_k()); + pc.printf("Speed = %f Km/hr\n\n", gps.get_speed_km()); + } else if (gps_message == GLL) { + pc.printf("Responding to GLL message.\n"); + pc.printf("I'm at %f, %f\n", gps.get_dec_latitude(), gps.get_dec_longitude()); + } else if (gps_message == RMC) { + pc.printf("Responding to RMC message.\n"); + pc.printf("I'm at %f, %f\n", gps.get_dec_latitude(), gps.get_dec_longitude()); + pc.printf("True heading = %f deg\n", gps.get_course_t()); + pc.printf("Speed = %f knots\n\n", gps.get_speed_k()); } else if (gps_message == NO_LOCK) { pc.printf("Oh Dear! No lock :(\n"); }