gps
GPS.h@0:e239db2b266d, 2018-03-10 (annotated)
- Committer:
- Noah_Newsom
- Date:
- Sat Mar 10 12:15:43 2018 +0000
- Revision:
- 0:e239db2b266d
tracker
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Noah_Newsom | 0:e239db2b266d | 1 | /****************************************************** |
Noah_Newsom | 0:e239db2b266d | 2 | * A basic mbed library for the Adafruit ultimate * |
Noah_Newsom | 0:e239db2b266d | 3 | * GPS module NOTE: the LOCUS functions are yet to be * |
Noah_Newsom | 0:e239db2b266d | 4 | * implemented * |
Noah_Newsom | 0:e239db2b266d | 5 | * * |
Noah_Newsom | 0:e239db2b266d | 6 | * Written by: Sam Clarke * |
Noah_Newsom | 0:e239db2b266d | 7 | ******************************************************/ |
Noah_Newsom | 0:e239db2b266d | 8 | |
Noah_Newsom | 0:e239db2b266d | 9 | #include "mbed.h" |
Noah_Newsom | 0:e239db2b266d | 10 | #include <string> |
Noah_Newsom | 0:e239db2b266d | 11 | |
Noah_Newsom | 0:e239db2b266d | 12 | #ifndef GPS_H |
Noah_Newsom | 0:e239db2b266d | 13 | #define GPS_H |
Noah_Newsom | 0:e239db2b266d | 14 | |
Noah_Newsom | 0:e239db2b266d | 15 | // EXAMPLE OUTPUTS |
Noah_Newsom | 0:e239db2b266d | 16 | // |
Noah_Newsom | 0:e239db2b266d | 17 | // $GPRMC,064951.000,A,2307.1256,N,12016.4438,E,0.03,165.48,260406,3.05,W,A*2C |
Noah_Newsom | 0:e239db2b266d | 18 | // $GPRMC, time, status, latitude, N/S, longitude, E/W, speed(knots), heading, date, N/A, N/A, MODE*CHECKSUM |
Noah_Newsom | 0:e239db2b266d | 19 | // |
Noah_Newsom | 0:e239db2b266d | 20 | // $GPGGA,064951.000,2307.1256,N,12016.4438,E,1,8,0.95,39.9,M,17.8,M,,*65 |
Noah_Newsom | 0:e239db2b266d | 21 | // $GPGGA, time, latitude, N/S, longitude, E/W, fix, satellites, hdop, altitude, M, geoidal sep , M,,*CHECKSUM |
Noah_Newsom | 0:e239db2b266d | 22 | // $GPGGA, %f, %*f, %*c, %*f, %*c, %d, %d, %*f, %*f, %*c, %*f , %*c,,%*c%*c%*c0 |
Noah_Newsom | 0:e239db2b266d | 23 | |
Noah_Newsom | 0:e239db2b266d | 24 | class GPS |
Noah_Newsom | 0:e239db2b266d | 25 | { |
Noah_Newsom | 0:e239db2b266d | 26 | public: |
Noah_Newsom | 0:e239db2b266d | 27 | |
Noah_Newsom | 0:e239db2b266d | 28 | GPS(PinName tx, PinName rx); |
Noah_Newsom | 0:e239db2b266d | 29 | void Init(); |
Noah_Newsom | 0:e239db2b266d | 30 | int parseData(); |
Noah_Newsom | 0:e239db2b266d | 31 | float time; // UTC time |
Noah_Newsom | 0:e239db2b266d | 32 | int hours; |
Noah_Newsom | 0:e239db2b266d | 33 | int minutes; |
Noah_Newsom | 0:e239db2b266d | 34 | float seconds; |
Noah_Newsom | 0:e239db2b266d | 35 | char validity,ns,ew;// RMC data status A = Data Valid; V = Data Not valid; |
Noah_Newsom | 0:e239db2b266d | 36 | float latitude; // |
Noah_Newsom | 0:e239db2b266d | 37 | float longitude; // |
Noah_Newsom | 0:e239db2b266d | 38 | float speed; // speed in knots |
Noah_Newsom | 0:e239db2b266d | 39 | float heading; // heading in degrees derived from previous & current location |
Noah_Newsom | 0:e239db2b266d | 40 | string date; // |
Noah_Newsom | 0:e239db2b266d | 41 | int day; |
Noah_Newsom | 0:e239db2b266d | 42 | int month; |
Noah_Newsom | 0:e239db2b266d | 43 | int year; |
Noah_Newsom | 0:e239db2b266d | 44 | int fixtype; // 0 = no fix; 1 = fix; 2=differential fix |
Noah_Newsom | 0:e239db2b266d | 45 | int satellites; // number of satellites used |
Noah_Newsom | 0:e239db2b266d | 46 | float altitude; // |
Noah_Newsom | 0:e239db2b266d | 47 | string fix; |
Noah_Newsom | 0:e239db2b266d | 48 | string cardinal; |
Noah_Newsom | 0:e239db2b266d | 49 | float kph; |
Noah_Newsom | 0:e239db2b266d | 50 | |
Noah_Newsom | 0:e239db2b266d | 51 | private: |
Noah_Newsom | 0:e239db2b266d | 52 | |
Noah_Newsom | 0:e239db2b266d | 53 | float trunc ( float v); |
Noah_Newsom | 0:e239db2b266d | 54 | void getData(); |
Noah_Newsom | 0:e239db2b266d | 55 | Serial _UltimateGps; |
Noah_Newsom | 0:e239db2b266d | 56 | char NEMA[256]; |
Noah_Newsom | 0:e239db2b266d | 57 | }; |
Noah_Newsom | 0:e239db2b266d | 58 | #endif |
Noah_Newsom | 0:e239db2b266d | 59 | |
Noah_Newsom | 0:e239db2b266d | 60 | /* |
Noah_Newsom | 0:e239db2b266d | 61 | #define 1HZ_STREAM "$PMTK220,1000*1F\r\n" // 1.0 second interval |
Noah_Newsom | 0:e239db2b266d | 62 | #define 5HZ_STREAM "$PMTK220,200*2C\r\n" // 0.2 second interval |
Noah_Newsom | 0:e239db2b266d | 63 | #define 10HZ_STREAM "$PMTK220,100*2F\r\n" // 0.1 second interval |
Noah_Newsom | 0:e239db2b266d | 64 | |
Noah_Newsom | 0:e239db2b266d | 65 | #define OUTPUT_RMC "$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29\r\n" |
Noah_Newsom | 0:e239db2b266d | 66 | #define OUTPUT_RMCGGA "$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n" |
Noah_Newsom | 0:e239db2b266d | 67 | #define OUTPUT_OFF "$PMTK314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28\r\n" |
Noah_Newsom | 0:e239db2b266d | 68 | */ |