nmea gps library - without any serial
Dependents: HARP2 HARP3 20180621_FT813
Fork of GPS_parser by
NMEA GPS Serial Output parser.
Routine taken from NMEA Software Standard (NMEA 0183) http://www.winsystems.com/software/nmea.pdf
Only handles GGA and RMC Messages
Diff: GPS_parser.h
- Revision:
- 5:94daced1e61a
- Child:
- 6:4ed12067a314
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/GPS_parser.h Wed Dec 12 17:32:31 2012 +0000 @@ -0,0 +1,84 @@ +#include "mbed.h" + +#ifndef MBED_GPS_PARSER_H +#define MBED_GPS_PARSER_H + +#define NO_LOCK 1 +#define NOT_PARSED 2 +#define GGA 3 +#define GLL 4 +#define RMC 5 +#define VTG 6 + +#define PI (3.141592653589793) + +/** A GPS_parser interface for reading from a Globalsat EM-406 GPS Module */ +class GPS_Parser { +public: + + GPS_Parser(); + + /** 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 *); + 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(); + + // 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); + + // calculated values + volatile float dec_longitude; + volatile float dec_latitude; + volatile float altitude_ft; + + // GGA - Global Positioning System Fixed Data + volatile float nmea_longitude; + volatile float nmea_latitude; + volatile float utc_time; + volatile char ns, ew; + volatile int lock; + volatile int satelites; + volatile float hdop; + volatile float msl_altitude; + volatile char msl_units; + + // RMC - Recommended Minimmum Specific GNS Data + volatile char rmc_status; + volatile float speed_k; + volatile float course_d; + volatile int date; + + // GLL + volatile char gll_status; + + // VTG - Course over ground, ground speed + volatile float course_t; // ground speed true + volatile char course_t_unit; + volatile float course_m; // magnetic + volatile char course_m_unit; + volatile char speed_k_unit; + volatile float speed_km; // speek km/hr + volatile char speed_km_unit; +}; + +#endif