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:
- 9:9b2351e25a84
- Parent:
- 8:59acef1c795b
- Child:
- 10:a6e1707fdec0
--- a/GPS_parser.h Thu Dec 13 05:52:43 2012 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ -#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(); - - /** Parse the incoming GPS data, returning whether there is a lock - * - * @param line the nmea string to parse, uses tokenizer vs sscanf - * @return 1 if there was a lock when the sample was taken (and therefore .longitude and .latitude are valid), else 0 - */ - int parse(char *); - int get_lock() { - return lock; - } - int get_date() { - return date; - } - float get_time() { - return utc_time; - } - float get_nmea_longitude(); - float get_nmea_latitude(); - float get_dec_longitude(); - float get_dec_latitude(); - float get_msl_altitude(); - float get_course_d(); - float get_speed_k(); - int get_satellites(); - 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); - char *my_token(char *,char); - - char stat_string[128]; // used in my_token - char *current; - - char *field[50]; // used by parse nmea - - // 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 satellites; - 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; -}; - -#endif