nmea gps library - without any serial
Fork of GPS by
GPS_parser.h@5:94daced1e61a, 2012-12-12 (annotated)
- Committer:
- tylerjw
- Date:
- Wed Dec 12 17:32:31 2012 +0000
- Revision:
- 5:94daced1e61a
- Child:
- 6:4ed12067a314
bug fix
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tylerjw | 5:94daced1e61a | 1 | #include "mbed.h" |
tylerjw | 5:94daced1e61a | 2 | |
tylerjw | 5:94daced1e61a | 3 | #ifndef MBED_GPS_PARSER_H |
tylerjw | 5:94daced1e61a | 4 | #define MBED_GPS_PARSER_H |
tylerjw | 5:94daced1e61a | 5 | |
tylerjw | 5:94daced1e61a | 6 | #define NO_LOCK 1 |
tylerjw | 5:94daced1e61a | 7 | #define NOT_PARSED 2 |
tylerjw | 5:94daced1e61a | 8 | #define GGA 3 |
tylerjw | 5:94daced1e61a | 9 | #define GLL 4 |
tylerjw | 5:94daced1e61a | 10 | #define RMC 5 |
tylerjw | 5:94daced1e61a | 11 | #define VTG 6 |
tylerjw | 5:94daced1e61a | 12 | |
tylerjw | 5:94daced1e61a | 13 | #define PI (3.141592653589793) |
tylerjw | 5:94daced1e61a | 14 | |
tylerjw | 5:94daced1e61a | 15 | /** A GPS_parser interface for reading from a Globalsat EM-406 GPS Module */ |
tylerjw | 5:94daced1e61a | 16 | class GPS_Parser { |
tylerjw | 5:94daced1e61a | 17 | public: |
tylerjw | 5:94daced1e61a | 18 | |
tylerjw | 5:94daced1e61a | 19 | GPS_Parser(); |
tylerjw | 5:94daced1e61a | 20 | |
tylerjw | 5:94daced1e61a | 21 | /** Sample the incoming GPS data, returning whether there is a lock |
tylerjw | 5:94daced1e61a | 22 | * |
tylerjw | 5:94daced1e61a | 23 | * @return 1 if there was a lock when the sample was taken (and therefore .longitude and .latitude are valid), else 0 |
tylerjw | 5:94daced1e61a | 24 | */ |
tylerjw | 5:94daced1e61a | 25 | int sample(char *); |
tylerjw | 5:94daced1e61a | 26 | float get_nmea_longitude(); |
tylerjw | 5:94daced1e61a | 27 | float get_nmea_latitude(); |
tylerjw | 5:94daced1e61a | 28 | float get_dec_longitude(); |
tylerjw | 5:94daced1e61a | 29 | float get_dec_latitude(); |
tylerjw | 5:94daced1e61a | 30 | float get_msl_altitude(); |
tylerjw | 5:94daced1e61a | 31 | float get_course_t(); |
tylerjw | 5:94daced1e61a | 32 | float get_course_m(); |
tylerjw | 5:94daced1e61a | 33 | float get_speed_k(); |
tylerjw | 5:94daced1e61a | 34 | float get_speed_km(); |
tylerjw | 5:94daced1e61a | 35 | int get_satelites(); |
tylerjw | 5:94daced1e61a | 36 | float get_altitude_ft(); |
tylerjw | 5:94daced1e61a | 37 | |
tylerjw | 5:94daced1e61a | 38 | // navigational functions |
tylerjw | 5:94daced1e61a | 39 | float calc_course_to(float, float); |
tylerjw | 5:94daced1e61a | 40 | double calc_dist_to_mi(float, float); |
tylerjw | 5:94daced1e61a | 41 | double calc_dist_to_ft(float, float); |
tylerjw | 5:94daced1e61a | 42 | double calc_dist_to_km(float, float); |
tylerjw | 5:94daced1e61a | 43 | double calc_dist_to_m(float, float); |
tylerjw | 5:94daced1e61a | 44 | |
tylerjw | 5:94daced1e61a | 45 | private: |
tylerjw | 5:94daced1e61a | 46 | float nmea_to_dec(float, char); |
tylerjw | 5:94daced1e61a | 47 | float trunc(float v); |
tylerjw | 5:94daced1e61a | 48 | |
tylerjw | 5:94daced1e61a | 49 | // calculated values |
tylerjw | 5:94daced1e61a | 50 | volatile float dec_longitude; |
tylerjw | 5:94daced1e61a | 51 | volatile float dec_latitude; |
tylerjw | 5:94daced1e61a | 52 | volatile float altitude_ft; |
tylerjw | 5:94daced1e61a | 53 | |
tylerjw | 5:94daced1e61a | 54 | // GGA - Global Positioning System Fixed Data |
tylerjw | 5:94daced1e61a | 55 | volatile float nmea_longitude; |
tylerjw | 5:94daced1e61a | 56 | volatile float nmea_latitude; |
tylerjw | 5:94daced1e61a | 57 | volatile float utc_time; |
tylerjw | 5:94daced1e61a | 58 | volatile char ns, ew; |
tylerjw | 5:94daced1e61a | 59 | volatile int lock; |
tylerjw | 5:94daced1e61a | 60 | volatile int satelites; |
tylerjw | 5:94daced1e61a | 61 | volatile float hdop; |
tylerjw | 5:94daced1e61a | 62 | volatile float msl_altitude; |
tylerjw | 5:94daced1e61a | 63 | volatile char msl_units; |
tylerjw | 5:94daced1e61a | 64 | |
tylerjw | 5:94daced1e61a | 65 | // RMC - Recommended Minimmum Specific GNS Data |
tylerjw | 5:94daced1e61a | 66 | volatile char rmc_status; |
tylerjw | 5:94daced1e61a | 67 | volatile float speed_k; |
tylerjw | 5:94daced1e61a | 68 | volatile float course_d; |
tylerjw | 5:94daced1e61a | 69 | volatile int date; |
tylerjw | 5:94daced1e61a | 70 | |
tylerjw | 5:94daced1e61a | 71 | // GLL |
tylerjw | 5:94daced1e61a | 72 | volatile char gll_status; |
tylerjw | 5:94daced1e61a | 73 | |
tylerjw | 5:94daced1e61a | 74 | // VTG - Course over ground, ground speed |
tylerjw | 5:94daced1e61a | 75 | volatile float course_t; // ground speed true |
tylerjw | 5:94daced1e61a | 76 | volatile char course_t_unit; |
tylerjw | 5:94daced1e61a | 77 | volatile float course_m; // magnetic |
tylerjw | 5:94daced1e61a | 78 | volatile char course_m_unit; |
tylerjw | 5:94daced1e61a | 79 | volatile char speed_k_unit; |
tylerjw | 5:94daced1e61a | 80 | volatile float speed_km; // speek km/hr |
tylerjw | 5:94daced1e61a | 81 | volatile char speed_km_unit; |
tylerjw | 5:94daced1e61a | 82 | }; |
tylerjw | 5:94daced1e61a | 83 | |
tylerjw | 5:94daced1e61a | 84 | #endif |