nmea gps library - without any serial

Fork of GPS by Tyler Weaver

Committer:
tylerjw
Date:
Wed Dec 12 17:53:50 2012 +0000
Revision:
6:4ed12067a314
Parent:
5:94daced1e61a
Child:
7:01a8379370e4
get_lock, get_date, get_time

Who changed what in which revision?

UserRevisionLine numberNew 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 6:4ed12067a314 26 int get_lock() { return lock; }
tylerjw 6:4ed12067a314 27 int get_date() { return date; }
tylerjw 6:4ed12067a314 28 float get_time() { return utc_time; }
tylerjw 5:94daced1e61a 29 float get_nmea_longitude();
tylerjw 5:94daced1e61a 30 float get_nmea_latitude();
tylerjw 5:94daced1e61a 31 float get_dec_longitude();
tylerjw 5:94daced1e61a 32 float get_dec_latitude();
tylerjw 5:94daced1e61a 33 float get_msl_altitude();
tylerjw 5:94daced1e61a 34 float get_course_t();
tylerjw 5:94daced1e61a 35 float get_course_m();
tylerjw 5:94daced1e61a 36 float get_speed_k();
tylerjw 5:94daced1e61a 37 float get_speed_km();
tylerjw 5:94daced1e61a 38 int get_satelites();
tylerjw 5:94daced1e61a 39 float get_altitude_ft();
tylerjw 5:94daced1e61a 40
tylerjw 5:94daced1e61a 41 // navigational functions
tylerjw 5:94daced1e61a 42 float calc_course_to(float, float);
tylerjw 5:94daced1e61a 43 double calc_dist_to_mi(float, float);
tylerjw 5:94daced1e61a 44 double calc_dist_to_ft(float, float);
tylerjw 5:94daced1e61a 45 double calc_dist_to_km(float, float);
tylerjw 5:94daced1e61a 46 double calc_dist_to_m(float, float);
tylerjw 5:94daced1e61a 47
tylerjw 5:94daced1e61a 48 private:
tylerjw 5:94daced1e61a 49 float nmea_to_dec(float, char);
tylerjw 5:94daced1e61a 50 float trunc(float v);
tylerjw 5:94daced1e61a 51
tylerjw 5:94daced1e61a 52 // calculated values
tylerjw 5:94daced1e61a 53 volatile float dec_longitude;
tylerjw 5:94daced1e61a 54 volatile float dec_latitude;
tylerjw 5:94daced1e61a 55 volatile float altitude_ft;
tylerjw 5:94daced1e61a 56
tylerjw 5:94daced1e61a 57 // GGA - Global Positioning System Fixed Data
tylerjw 5:94daced1e61a 58 volatile float nmea_longitude;
tylerjw 5:94daced1e61a 59 volatile float nmea_latitude;
tylerjw 5:94daced1e61a 60 volatile float utc_time;
tylerjw 5:94daced1e61a 61 volatile char ns, ew;
tylerjw 5:94daced1e61a 62 volatile int lock;
tylerjw 5:94daced1e61a 63 volatile int satelites;
tylerjw 5:94daced1e61a 64 volatile float hdop;
tylerjw 5:94daced1e61a 65 volatile float msl_altitude;
tylerjw 5:94daced1e61a 66 volatile char msl_units;
tylerjw 5:94daced1e61a 67
tylerjw 5:94daced1e61a 68 // RMC - Recommended Minimmum Specific GNS Data
tylerjw 5:94daced1e61a 69 volatile char rmc_status;
tylerjw 5:94daced1e61a 70 volatile float speed_k;
tylerjw 5:94daced1e61a 71 volatile float course_d;
tylerjw 5:94daced1e61a 72 volatile int date;
tylerjw 5:94daced1e61a 73
tylerjw 5:94daced1e61a 74 // GLL
tylerjw 5:94daced1e61a 75 volatile char gll_status;
tylerjw 5:94daced1e61a 76
tylerjw 5:94daced1e61a 77 // VTG - Course over ground, ground speed
tylerjw 5:94daced1e61a 78 volatile float course_t; // ground speed true
tylerjw 5:94daced1e61a 79 volatile char course_t_unit;
tylerjw 5:94daced1e61a 80 volatile float course_m; // magnetic
tylerjw 5:94daced1e61a 81 volatile char course_m_unit;
tylerjw 5:94daced1e61a 82 volatile char speed_k_unit;
tylerjw 5:94daced1e61a 83 volatile float speed_km; // speek km/hr
tylerjw 5:94daced1e61a 84 volatile char speed_km_unit;
tylerjw 5:94daced1e61a 85 };
tylerjw 5:94daced1e61a 86
tylerjw 5:94daced1e61a 87 #endif