Mbed library to handle GPS data reception and parsing

Dependents:   GPS_U-blox_NEO-6M_Code

Features

  • All positionning parameters are contained into a global data structure.
  • Automatic nema string parsing and data structure update.
    • GSA,GGA,VTG and RMC
  • Convert latitude and longitude to decimal value.
  • Converts latittude,longitude and altitude to ECEF coordinates.

Planed developement

  • Test library for RTOS use.
  • Complete the nema parsing decoders (couple of parameters are not parsed yet and not present in the data structure).
  • Add conversion tool to get ENU coordinates.
Committer:
chris215
Date:
Wed Aug 06 01:37:39 2014 +0000
Revision:
0:0c1aa5906cef
Child:
2:72ac4d7044a7
Renamed library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
chris215 0:0c1aa5906cef 1 #ifndef _MBED_GPS_DEFS_H_
chris215 0:0c1aa5906cef 2 #define _MBED_GPS_DEFS_H_
chris215 0:0c1aa5906cef 3 //=======================================================================
chris215 0:0c1aa5906cef 4 // GPS Special caracters
chris215 0:0c1aa5906cef 5 #define START_CHAR '$'
chris215 0:0c1aa5906cef 6 #define END_CHAR 0x0D
chris215 0:0c1aa5906cef 7 //=======================================================================
chris215 0:0c1aa5906cef 8 // GPS BUFFER SIZE
chris215 0:0c1aa5906cef 9 #define RX_BUFFER_SIZE 80
chris215 0:0c1aa5906cef 10 //=======================================================================
chris215 0:0c1aa5906cef 11 // GPS COMMANDS
chris215 0:0c1aa5906cef 12 #define GPS_CMD_GPGGA "$GPGGA"
chris215 0:0c1aa5906cef 13 #define GPS_CMD_GPGSA "$GPGSA"
chris215 0:0c1aa5906cef 14 #define GPS_CMD_GPGSV "$GPGSV"
chris215 0:0c1aa5906cef 15 #define GPS_CMD_GPRMC "$GPRMC"
chris215 0:0c1aa5906cef 16 #define GPS_CMD_GPVTG "$GPVTG"
chris215 0:0c1aa5906cef 17
chris215 0:0c1aa5906cef 18 //=======================================================================
chris215 0:0c1aa5906cef 19 // GPS MESSAGE STRUCTURE
chris215 0:0c1aa5906cef 20 typedef struct {
chris215 0:0c1aa5906cef 21 char data[RX_BUFFER_SIZE];
chris215 0:0c1aa5906cef 22 }message;
chris215 0:0c1aa5906cef 23
chris215 0:0c1aa5906cef 24 //=======================================================================
chris215 0:0c1aa5906cef 25 // GPS COORDINATE POINT STRUCTURES
chris215 0:0c1aa5906cef 26 typedef struct{
chris215 0:0c1aa5906cef 27 double latitude;
chris215 0:0c1aa5906cef 28 double longitude;
chris215 0:0c1aa5906cef 29 float altitude;
chris215 0:0c1aa5906cef 30 }geodPoint;
chris215 0:0c1aa5906cef 31
chris215 0:0c1aa5906cef 32 typedef struct{
chris215 0:0c1aa5906cef 33 double x;
chris215 0:0c1aa5906cef 34 double y;
chris215 0:0c1aa5906cef 35 double z;
chris215 0:0c1aa5906cef 36 }ECEFPoint;
chris215 0:0c1aa5906cef 37
chris215 0:0c1aa5906cef 38 typedef struct{
chris215 0:0c1aa5906cef 39 float dx;
chris215 0:0c1aa5906cef 40 float dy;
chris215 0:0c1aa5906cef 41 float dz;
chris215 0:0c1aa5906cef 42 float d;
chris215 0:0c1aa5906cef 43 }ECEFDistance;
chris215 0:0c1aa5906cef 44
chris215 0:0c1aa5906cef 45 typedef struct{
chris215 0:0c1aa5906cef 46 char time[7];
chris215 0:0c1aa5906cef 47 char hour;
chris215 0:0c1aa5906cef 48 char min;
chris215 0:0c1aa5906cef 49 char sec;
chris215 0:0c1aa5906cef 50 int msec;
chris215 0:0c1aa5906cef 51 }FIXtime;
chris215 0:0c1aa5906cef 52 typedef struct{
chris215 0:0c1aa5906cef 53 char date[7];
chris215 0:0c1aa5906cef 54 char day;
chris215 0:0c1aa5906cef 55 char month;
chris215 0:0c1aa5906cef 56 char year;
chris215 0:0c1aa5906cef 57 }FIXDate;
chris215 0:0c1aa5906cef 58
chris215 0:0c1aa5906cef 59 typedef struct{
chris215 0:0c1aa5906cef 60 double latitude;
chris215 0:0c1aa5906cef 61 char latLoc;
chris215 0:0c1aa5906cef 62 double longitude;
chris215 0:0c1aa5906cef 63 char lonLoc;
chris215 0:0c1aa5906cef 64 float GPStime;
chris215 0:0c1aa5906cef 65 char GPSStatus;
chris215 0:0c1aa5906cef 66 char FixQal;
chris215 0:0c1aa5906cef 67 float GPSAltitude;
chris215 0:0c1aa5906cef 68 float GEOIDHeight;
chris215 0:0c1aa5906cef 69
chris215 0:0c1aa5906cef 70 float TrueTrack; //Relative to true north
chris215 0:0c1aa5906cef 71 float MagneticTrack; //Relative to magnetic north
chris215 0:0c1aa5906cef 72 float GroundSpeedN;
chris215 0:0c1aa5906cef 73 float GroundSpeedK;
chris215 0:0c1aa5906cef 74
chris215 0:0c1aa5906cef 75 char TrackedSatCnt;
chris215 0:0c1aa5906cef 76
chris215 0:0c1aa5906cef 77 char mode; //A=automatic M=manual
chris215 0:0c1aa5906cef 78 char fix; //1=not valid, 2=2d, 3=3d
chris215 0:0c1aa5906cef 79
chris215 0:0c1aa5906cef 80 float PDOP,HDOP,VDOP;
chris215 0:0c1aa5906cef 81
chris215 0:0c1aa5906cef 82 FIXtime time;
chris215 0:0c1aa5906cef 83 FIXDate date;
chris215 0:0c1aa5906cef 84 }GPSInfo;
chris215 0:0c1aa5906cef 85 #endif