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.
Decoders/GPVTGdecoder.hpp@5:8a73e34b3978, 2016-02-16 (annotated)
- Committer:
- chris215
- Date:
- Tue Feb 16 02:57:35 2016 +0000
- Revision:
- 5:8a73e34b3978
- Parent:
- 4:d911d7c4e09d
Function renaming. Adding gps update calls.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chris215 | 0:0c1aa5906cef | 1 | #include "mbed.h" |
chris215 | 3:20f8faf2ad18 | 2 | #include "DecodersUtils.h" |
chris215 | 0:0c1aa5906cef | 3 | #include "mbedGPSDefs.h" |
chris215 | 0:0c1aa5906cef | 4 | |
chris215 | 4:d911d7c4e09d | 5 | #include "USBSerial.h" |
chris215 | 4:d911d7c4e09d | 6 | extern USBSerial pc; // Virtual serial port over USB |
chris215 | 3:20f8faf2ad18 | 7 | |
chris215 | 0:0c1aa5906cef | 8 | void DecodeGPVTG(char * tokenStr,GPSInfo& data) |
chris215 | 0:0c1aa5906cef | 9 | { |
chris215 | 3:20f8faf2ad18 | 10 | //pc.printf("VTGDecoder debug: %s\n\r",tokenStr); |
chris215 | 0:0c1aa5906cef | 11 | int parameterCount = 0; |
chris215 | 0:0c1aa5906cef | 12 | char *rest; // to point to the rest of the string after token extraction. |
chris215 | 0:0c1aa5906cef | 13 | char *token; // to point to the actual token returned. |
chris215 | 0:0c1aa5906cef | 14 | char *ptr = tokenStr; // make q point to start of hello. |
chris215 | 3:20f8faf2ad18 | 15 | //token = strtok_single(ptr, ","); |
chris215 | 3:20f8faf2ad18 | 16 | token = strtok_single(ptr, ","); |
chris215 | 0:0c1aa5906cef | 17 | while (token != NULL) |
chris215 | 0:0c1aa5906cef | 18 | { |
chris215 | 3:20f8faf2ad18 | 19 | //pc.printf("%d:%s ",parameterCount,token); |
chris215 | 0:0c1aa5906cef | 20 | if(parameterCount == 1) |
chris215 | 0:0c1aa5906cef | 21 | data.TrueTrack = atof(token); |
chris215 | 0:0c1aa5906cef | 22 | |
chris215 | 0:0c1aa5906cef | 23 | if(parameterCount == 3) |
chris215 | 0:0c1aa5906cef | 24 | data.MagneticTrack = atof(token); |
chris215 | 0:0c1aa5906cef | 25 | |
chris215 | 0:0c1aa5906cef | 26 | if(parameterCount == 5) |
chris215 | 0:0c1aa5906cef | 27 | data.GroundSpeedN = atof(token); |
chris215 | 0:0c1aa5906cef | 28 | |
chris215 | 0:0c1aa5906cef | 29 | if(parameterCount == 7) |
chris215 | 0:0c1aa5906cef | 30 | data.GroundSpeedK = atof(token); |
chris215 | 0:0c1aa5906cef | 31 | |
chris215 | 0:0c1aa5906cef | 32 | parameterCount++; |
chris215 | 0:0c1aa5906cef | 33 | ptr = rest; // rest contains the left over part..assign it to ptr. |
chris215 | 3:20f8faf2ad18 | 34 | //token = strtok_r(ptr, ",",&rest); |
chris215 | 3:20f8faf2ad18 | 35 | token = strtok_single(NULL, ","); |
chris215 | 0:0c1aa5906cef | 36 | } |
chris215 | 3:20f8faf2ad18 | 37 | //pc.printf("\n\r"); |
chris215 | 0:0c1aa5906cef | 38 | } |