This is used for sending Data to receiving mDot
Dependencies: libmDot-dev-mbed5-deprecated sd-driver ISL29011
Fork of mdot-examples by
MBed_Adafruit_GPS.h@31:79940947df2c, 2018-04-14 (annotated)
- Committer:
- SDesign2018
- Date:
- Sat Apr 14 18:20:55 2018 +0000
- Revision:
- 31:79940947df2c
- Parent:
- 26:15df8f054d11
SD card functionality isn't working as wanted. Was working before.; Add method to send longitude and latitude floats.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
SDesign2018 | 26:15df8f054d11 | 1 | /*********************************** |
SDesign2018 | 26:15df8f054d11 | 2 | This is the Adafruit GPS library - the ultimate GPS library |
SDesign2018 | 26:15df8f054d11 | 3 | for the ultimate GPS module! |
SDesign2018 | 26:15df8f054d11 | 4 | |
SDesign2018 | 26:15df8f054d11 | 5 | Tested and works great with the Adafruit Ultimate GPS module |
SDesign2018 | 26:15df8f054d11 | 6 | using MTK33x9 chipset |
SDesign2018 | 26:15df8f054d11 | 7 | ------> http://www.adafruit.com/products/746 |
SDesign2018 | 26:15df8f054d11 | 8 | Pick one up today at the Adafruit electronics shop |
SDesign2018 | 26:15df8f054d11 | 9 | and help support open source hardware & software! -ada |
SDesign2018 | 26:15df8f054d11 | 10 | |
SDesign2018 | 26:15df8f054d11 | 11 | Adafruit invests time and resources providing this open source code, |
SDesign2018 | 26:15df8f054d11 | 12 | please support Adafruit and open-source hardware by purchasing |
SDesign2018 | 26:15df8f054d11 | 13 | products from Adafruit! |
SDesign2018 | 26:15df8f054d11 | 14 | |
SDesign2018 | 26:15df8f054d11 | 15 | Written by Limor Fried/Ladyada for Adafruit Industries. |
SDesign2018 | 26:15df8f054d11 | 16 | BSD license, check license.txt for more information |
SDesign2018 | 26:15df8f054d11 | 17 | All text above must be included in any redistribution |
SDesign2018 | 26:15df8f054d11 | 18 | ****************************************/ |
SDesign2018 | 26:15df8f054d11 | 19 | #include "mbed.h" |
SDesign2018 | 26:15df8f054d11 | 20 | #include <stdint.h> |
SDesign2018 | 26:15df8f054d11 | 21 | #include <math.h> |
SDesign2018 | 26:15df8f054d11 | 22 | #include <ctype.h> |
SDesign2018 | 26:15df8f054d11 | 23 | |
SDesign2018 | 26:15df8f054d11 | 24 | #ifndef _MBED_ADAFRUIT_GPS_H |
SDesign2018 | 26:15df8f054d11 | 25 | #define _MBED_ADAFRUIT_GPS_H |
SDesign2018 | 26:15df8f054d11 | 26 | |
SDesign2018 | 26:15df8f054d11 | 27 | |
SDesign2018 | 26:15df8f054d11 | 28 | // different commands to set the update rate from once a second (1 Hz) to 10 times a second (10Hz) |
SDesign2018 | 26:15df8f054d11 | 29 | #define PMTK_SET_NMEA_UPDATE_1HZ "$PMTK220,1000*1F" |
SDesign2018 | 26:15df8f054d11 | 30 | #define PMTK_SET_NMEA_UPDATE_5HZ "$PMTK220,200*2C" |
SDesign2018 | 26:15df8f054d11 | 31 | #define PMTK_SET_NMEA_UPDATE_10HZ "$PMTK220,100*2F" |
SDesign2018 | 26:15df8f054d11 | 32 | |
SDesign2018 | 26:15df8f054d11 | 33 | |
SDesign2018 | 26:15df8f054d11 | 34 | #define PMTK_SET_BAUD_57600 "$PMTK251,57600*2C" |
SDesign2018 | 26:15df8f054d11 | 35 | #define PMTK_SET_BAUD_9600 "$PMTK251,9600*17" |
SDesign2018 | 26:15df8f054d11 | 36 | |
SDesign2018 | 26:15df8f054d11 | 37 | // turn on only the second sentence (GPRMC) |
SDesign2018 | 26:15df8f054d11 | 38 | #define PMTK_SET_NMEA_OUTPUT_RMCONLY "$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29" |
SDesign2018 | 26:15df8f054d11 | 39 | // turn on GPRMC and GGA |
SDesign2018 | 26:15df8f054d11 | 40 | #define PMTK_SET_NMEA_OUTPUT_RMCGGA "$PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28" |
SDesign2018 | 26:15df8f054d11 | 41 | // turn on ALL THE DATA |
SDesign2018 | 26:15df8f054d11 | 42 | #define PMTK_SET_NMEA_OUTPUT_ALLDATA "$PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28" |
SDesign2018 | 26:15df8f054d11 | 43 | // turn off output |
SDesign2018 | 26:15df8f054d11 | 44 | #define PMTK_SET_NMEA_OUTPUT_OFF "$PMTK314,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*28" |
SDesign2018 | 26:15df8f054d11 | 45 | |
SDesign2018 | 26:15df8f054d11 | 46 | // to generate your own sentences, check out the MTK command datasheet and use a checksum calculator |
SDesign2018 | 26:15df8f054d11 | 47 | // such as the awesome http://www.hhhh.org/wiml/proj/nmeaxor.html |
SDesign2018 | 26:15df8f054d11 | 48 | |
SDesign2018 | 26:15df8f054d11 | 49 | #define PMTK_LOCUS_STARTLOG "$PMTK185,0*22" |
SDesign2018 | 26:15df8f054d11 | 50 | #define PMTK_LOCUS_LOGSTARTED "$PMTK001,185,3*3C" |
SDesign2018 | 26:15df8f054d11 | 51 | #define PMTK_LOCUS_QUERY_STATUS "$PMTK183*38" |
SDesign2018 | 26:15df8f054d11 | 52 | #define PMTK_LOCUS_ERASE_FLASH "$PMTK184,1*22" |
SDesign2018 | 26:15df8f054d11 | 53 | #define LOCUS_OVERLAP 0 |
SDesign2018 | 26:15df8f054d11 | 54 | #define LOCUS_FULLSTOP 1 |
SDesign2018 | 26:15df8f054d11 | 55 | |
SDesign2018 | 26:15df8f054d11 | 56 | // standby command & boot successful message |
SDesign2018 | 26:15df8f054d11 | 57 | #define PMTK_STANDBY "$PMTK161,0*28" |
SDesign2018 | 26:15df8f054d11 | 58 | #define PMTK_STANDBY_SUCCESS "$PMTK001,161,3*36" // Not needed currently |
SDesign2018 | 26:15df8f054d11 | 59 | #define PMTK_AWAKE "$PMTK010,002*2D" |
SDesign2018 | 26:15df8f054d11 | 60 | |
SDesign2018 | 26:15df8f054d11 | 61 | // ask for the release and version |
SDesign2018 | 26:15df8f054d11 | 62 | #define PMTK_Q_RELEASE "$PMTK605*31" |
SDesign2018 | 26:15df8f054d11 | 63 | |
SDesign2018 | 26:15df8f054d11 | 64 | // request for updates on antenna status |
SDesign2018 | 26:15df8f054d11 | 65 | #define PGCMD_ANTENNA "$PGCMD,33,1*6C" |
SDesign2018 | 26:15df8f054d11 | 66 | #define PGCMD_NOANTENNA "$PGCMD,33,0*6D" |
SDesign2018 | 26:15df8f054d11 | 67 | |
SDesign2018 | 26:15df8f054d11 | 68 | // how long to wait when we're looking for a response |
SDesign2018 | 26:15df8f054d11 | 69 | #define MAXWAITSENTENCE 5 |
SDesign2018 | 26:15df8f054d11 | 70 | |
SDesign2018 | 26:15df8f054d11 | 71 | |
SDesign2018 | 26:15df8f054d11 | 72 | |
SDesign2018 | 26:15df8f054d11 | 73 | class Adafruit_GPS { |
SDesign2018 | 26:15df8f054d11 | 74 | public: |
SDesign2018 | 26:15df8f054d11 | 75 | void begin(int baud); |
SDesign2018 | 26:15df8f054d11 | 76 | |
SDesign2018 | 26:15df8f054d11 | 77 | Adafruit_GPS(Serial * ser); |
SDesign2018 | 26:15df8f054d11 | 78 | |
SDesign2018 | 26:15df8f054d11 | 79 | char *lastNMEA(void); |
SDesign2018 | 26:15df8f054d11 | 80 | bool newNMEAreceived(); |
SDesign2018 | 26:15df8f054d11 | 81 | void common_init(void); |
SDesign2018 | 26:15df8f054d11 | 82 | void sendCommand(char *); |
SDesign2018 | 26:15df8f054d11 | 83 | void pause(bool b); |
SDesign2018 | 26:15df8f054d11 | 84 | |
SDesign2018 | 26:15df8f054d11 | 85 | bool parseNMEA(char *response); |
SDesign2018 | 26:15df8f054d11 | 86 | uint8_t parseHex(char c); |
SDesign2018 | 26:15df8f054d11 | 87 | |
SDesign2018 | 26:15df8f054d11 | 88 | char read(void); |
SDesign2018 | 26:15df8f054d11 | 89 | bool parse(char * nmea); |
SDesign2018 | 26:15df8f054d11 | 90 | void interruptReads(bool r); |
SDesign2018 | 26:15df8f054d11 | 91 | |
SDesign2018 | 26:15df8f054d11 | 92 | bool wakeup(void); |
SDesign2018 | 26:15df8f054d11 | 93 | bool standby(void); |
SDesign2018 | 26:15df8f054d11 | 94 | |
SDesign2018 | 26:15df8f054d11 | 95 | uint8_t hour, minute, seconds, year, month, day; |
SDesign2018 | 26:15df8f054d11 | 96 | uint16_t milliseconds; |
SDesign2018 | 26:15df8f054d11 | 97 | float latitude, longitude, geoidheight, altitude; |
SDesign2018 | 26:15df8f054d11 | 98 | float speed, angle, magvariation, HDOP; |
SDesign2018 | 26:15df8f054d11 | 99 | float latitudeDegrees, longitudeDegrees; |
SDesign2018 | 26:15df8f054d11 | 100 | char lat, lon, mag; |
SDesign2018 | 26:15df8f054d11 | 101 | bool fix; |
SDesign2018 | 26:15df8f054d11 | 102 | uint8_t fixquality, satellites; |
SDesign2018 | 26:15df8f054d11 | 103 | |
SDesign2018 | 26:15df8f054d11 | 104 | bool waitForSentence(char *wait, uint8_t max = MAXWAITSENTENCE); |
SDesign2018 | 26:15df8f054d11 | 105 | bool LOCUS_StartLogger(void); |
SDesign2018 | 26:15df8f054d11 | 106 | bool LOCUS_ReadStatus(void); |
SDesign2018 | 26:15df8f054d11 | 107 | |
SDesign2018 | 26:15df8f054d11 | 108 | uint16_t LOCUS_serial, LOCUS_records; |
SDesign2018 | 26:15df8f054d11 | 109 | uint8_t LOCUS_type, LOCUS_mode, LOCUS_config, LOCUS_interval, LOCUS_distance, LOCUS_speed, LOCUS_status, LOCUS_percent; |
SDesign2018 | 26:15df8f054d11 | 110 | private: |
SDesign2018 | 26:15df8f054d11 | 111 | bool paused; |
SDesign2018 | 26:15df8f054d11 | 112 | |
SDesign2018 | 26:15df8f054d11 | 113 | Serial * gpsSerial; |
SDesign2018 | 26:15df8f054d11 | 114 | }; |
SDesign2018 | 26:15df8f054d11 | 115 | |
SDesign2018 | 26:15df8f054d11 | 116 | #endif |