This library (beta release) parses the GPS data coming from the TD1204. Beware, not all functionality has been fully tested.
Diff: GPS.h
- Revision:
- 0:67f22e813b74
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GPS.h Wed May 18 14:47:17 2016 +0000
@@ -0,0 +1,103 @@
+#include "mbed.h"
+
+#ifndef MBED_GPS_H
+#define MBED_GPS_H
+
+#define NO_LOCK 1
+#define NOT_PARSED 2
+#define GGA 3
+#define GLL 4
+#define RMC 5
+#define VTG 6
+#define ESTIMATE 7
+#define GSA 8
+
+#define PI (3.141592653589793)
+
+/** A GPS interface for reading from a Globalsat EM-406 GPS Module */
+class GPS {
+public:
+
+ /** Create the GPS interface, connected to the specified serial port
+ */
+ GPS(PinName tx, PinName rx);
+
+ /** Sample the incoming GPS data, returning whether there is a lock
+ *
+ * @return 1 if there was a lock when the sample was taken (and therefore .longitude and .latitude are valid), else 0
+ */
+ int sample();
+ char operating_mode;
+ int navigation_mode;
+ int satellites[12];
+ float pdop;
+ float hdop;
+ float vdop;
+ char gprmc_status;
+
+ float get_nmea_longitude();
+ float get_nmea_latitude();
+ 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();
+ float get_altitude_ft();
+ char * get_nmea_to_td();
+ char tdformat[32];
+
+ // navigational functions
+ float calc_course_to(float, float);
+ double calc_dist_to_mi(float, float);
+ double calc_dist_to_ft(float, float);
+ double calc_dist_to_km(float, float);
+ double calc_dist_to_m(float, float);
+
+private:
+ float nmea_to_dec(float, char);
+ float trunc(float v);
+ void getline();
+ void format_for_log(void);
+
+ Serial _gps;
+ char msg[1024];
+ char bfr[1030];
+
+ // calculated values
+ float dec_longitude;
+ float dec_latitude;
+ float altitude_ft;
+
+ // GGA - Global Positioning System Fixed Data
+ float nmea_longitude;
+ float nmea_latitude;
+ float utc_time;
+ char ns, ew;
+ int lock;
+ int satelites;
+ float msl_altitude;
+ char msl_units;
+
+ // RMC - Recommended Minimmum Specific GNS Data
+ char rmc_status;
+ float speed_k;
+ float course_d;
+ int date;
+
+ // GLL
+ char gll_status;
+
+ // VTG - Course over ground, ground speed
+ float course_t; // ground speed true
+ char course_t_unit;
+ float course_m; // magnetic
+ char course_m_unit;
+ char speed_k_unit;
+ float speed_km; // speek km/hr
+ char speed_km_unit;
+};
+
+#endif