gps

Committer:
Noah_Newsom
Date:
Sat Mar 10 12:15:43 2018 +0000
Revision:
0:e239db2b266d
tracker

Who changed what in which revision?

UserRevisionLine numberNew 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 */