Library is based on mlee350's library (MBed_Adafruit-GPS-Library) for Adafruit's GPS module (GlobalTop's MTK3339). Includes two CRITIAL bug fixes, as well as minor updates from Adafruit's Arduino library.
Fork of MBed_Adafruit-GPS-Library by
Diff: MBed_Adafruit_GPS.h
- Revision:
- 0:a23e3099bb0a
- Child:
- 1:96d7d157b384
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MBed_Adafruit_GPS.h Sat Mar 22 05:00:47 2014 +0000 @@ -0,0 +1,115 @@ +/*********************************** +This is the Adafruit GPS library - the ultimate GPS library +for the ultimate GPS module! + +Tested and works great with the Adafruit Ultimate GPS module +using MTK33x9 chipset + ------> http://www.adafruit.com/products/746 +Pick one up today at the Adafruit electronics shop +and help support open source hardware & software! -ada + +Adafruit invests time and resources providing this open source code, +please support Adafruit and open-source hardware by purchasing +products from Adafruit! + +Written by Limor Fried/Ladyada for Adafruit Industries. +BSD license, check license.txt for more information +All text above must be included in any redistribution +****************************************/ +#include "mbed.h" +#include <stdint.h> +#include <math.h> +#include <ctype.h> + +#ifndef _MBED_ADAFRUIT_GPS_H +#define _MBED_ADAFRUIT_GPS_H + + +// different commands to set the update rate from once a second (1 Hz) to 10 times a second (10Hz) +#define PMTK_SET_NMEA_UPDATE_1HZ "$PMTK220,1000*1F" +#define PMTK_SET_NMEA_UPDATE_5HZ "$PMTK220,200*2C" +#define PMTK_SET_NMEA_UPDATE_10HZ "$PMTK220,100*2F" + + +#define PMTK_SET_BAUD_57600 "$PMTK251,57600*2C" +#define PMTK_SET_BAUD_9600 "$PMTK251,9600*17" + +// turn on only the second sentence (GPRMC) +#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" +// turn on GPRMC and GGA +#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" +// turn on ALL THE DATA +#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" +// turn off output +#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" + +// to generate your own sentences, check out the MTK command datasheet and use a checksum calculator +// such as the awesome http://www.hhhh.org/wiml/proj/nmeaxor.html + +#define PMTK_LOCUS_STARTLOG "$PMTK185,0*22" +#define PMTK_LOCUS_LOGSTARTED "$PMTK001,185,3*3C" +#define PMTK_LOCUS_QUERY_STATUS "$PMTK183*38" +#define PMTK_LOCUS_ERASE_FLASH "$PMTK184,1*22" +#define LOCUS_OVERLAP 0 +#define LOCUS_FULLSTOP 1 + +// standby command & boot successful message +#define PMTK_STANDBY "$PMTK161,0*28" +#define PMTK_STANDBY_SUCCESS "$PMTK001,161,3*36" // Not needed currently +#define PMTK_AWAKE "$PMTK010,002*2D" + +// ask for the release and version +#define PMTK_Q_RELEASE "$PMTK605*31" + +// request for updates on antenna status +#define PGCMD_ANTENNA "$PGCMD,33,1*6C" +#define PGCMD_NOANTENNA "$PGCMD,33,0*6D" + +// how long to wait when we're looking for a response +#define MAXWAITSENTENCE 5 + + + +class Adafruit_GPS { + public: + void begin(int baud); + + Adafruit_GPS(Serial * ser); + + char *lastNMEA(void); + bool newNMEAreceived(); + void common_init(void); + void sendCommand(char *); + void pause(bool b); + + bool parseNMEA(char *response); + uint8_t parseHex(char c); + + char read(void); + bool parse(char * nmea); + void interruptReads(bool r); + + bool wakeup(void); + bool standby(void); + + uint8_t hour, minute, seconds, year, month, day; + uint16_t milliseconds; + float latitude, longitude, geoidheight, altitude; + float speed, angle, magvariation, HDOP; + char lat, lon, mag; + bool fix; + uint8_t fixquality, satellites; + + bool waitForSentence(char *wait, uint8_t max = MAXWAITSENTENCE); + bool LOCUS_StartLogger(void); + bool LOCUS_ReadStatus(void); + + uint16_t LOCUS_serial, LOCUS_records; + uint8_t LOCUS_type, LOCUS_mode, LOCUS_config, LOCUS_interval, LOCUS_distance, LOCUS_speed, LOCUS_status, LOCUS_percent; + private: + bool paused; + + Serial * gpsSerial; +}; + +#endif \ No newline at end of file