Slightly modified version of the SerialGPS library (https://os.mbed.com/teams/components/code/SerialGPS/) to support the BufferedSerial class

Committer:
runesla
Date:
Tue Feb 16 16:48:14 2021 +0100
Revision:
2:e7f24389167b
Parent:
1:214714f54773
Child:
3:ebd79e3acf14
some fixing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
runesla 0:1a8299deb917 1 /* mbed GPS Module Library
runesla 0:1a8299deb917 2 * Copyright (c) 2008-2010, sford
runesla 0:1a8299deb917 3 * Copyright (c) 2013, B.Adryan
runesla 0:1a8299deb917 4 *
runesla 0:1a8299deb917 5 * Permission is hereby granted, free of charge, to any person obtaining a copy
runesla 0:1a8299deb917 6 * of this software and associated documentation files (the "Software"), to deal
runesla 0:1a8299deb917 7 * in the Software without restriction, including without limitation the rights
runesla 0:1a8299deb917 8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
runesla 0:1a8299deb917 9 * copies of the Software, and to permit persons to whom the Software is
runesla 0:1a8299deb917 10 * furnished to do so, subject to the following conditions:
runesla 0:1a8299deb917 11 *
runesla 0:1a8299deb917 12 * The above copyright notice and this permission notice shall be included in
runesla 0:1a8299deb917 13 * all copies or substantial portions of the Software.
runesla 0:1a8299deb917 14 *
runesla 0:1a8299deb917 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
runesla 0:1a8299deb917 16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
runesla 0:1a8299deb917 17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
runesla 0:1a8299deb917 18 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
runesla 0:1a8299deb917 19 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
runesla 0:1a8299deb917 20 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
runesla 0:1a8299deb917 21 * THE SOFTWARE.
runesla 0:1a8299deb917 22 */
runesla 0:1a8299deb917 23
runesla 0:1a8299deb917 24 #ifndef MBED_GPS_H
runesla 0:1a8299deb917 25 #define MBED_GPS_H
runesla 0:1a8299deb917 26
runesla 2:e7f24389167b 27 #include "mbed.h"
runesla 2:e7f24389167b 28
runesla 0:1a8299deb917 29 /**
runesla 0:1a8299deb917 30 * A SerialGPS interface for reading from a serial GPS module
runesla 0:1a8299deb917 31 */
runesla 2:e7f24389167b 32 class SerialGPS
runesla 2:e7f24389167b 33 {
runesla 2:e7f24389167b 34 public:
runesla 0:1a8299deb917 35
runesla 2:e7f24389167b 36 /** Create the SerialGPS interface, connected to the specified serial port and speed.
runesla 2:e7f24389167b 37 * for example, GlobalSat EM406-A (e.g. on SparkFun GPS Shield) is 4800 Baud,
runesla 2:e7f24389167b 38 * Adafruit Ultimate GPSv3 (connected to serial) is 9600 Baud
runesla 2:e7f24389167b 39 */
runesla 2:e7f24389167b 40 SerialGPS(PinName tx, PinName rx, int baud);
runesla 0:1a8299deb917 41
runesla 2:e7f24389167b 42 /** Sample the incoming GPS data, returning whether there is a lock
runesla 2:e7f24389167b 43 *
runesla 2:e7f24389167b 44 * @return 1 if there was a lock when the sample was taken (and therefore .longitude and .latitude are valid), else 0
runesla 2:e7f24389167b 45 */
runesla 2:e7f24389167b 46 int sample();
runesla 2:e7f24389167b 47
runesla 2:e7f24389167b 48 /**
runesla 2:e7f24389167b 49 * The longitude (call sample() to set)
runesla 2:e7f24389167b 50 */
runesla 2:e7f24389167b 51 float longitude;
runesla 0:1a8299deb917 52
runesla 2:e7f24389167b 53 /**
runesla 2:e7f24389167b 54 * The latitude (call sample() to set)
runesla 2:e7f24389167b 55 */
runesla 2:e7f24389167b 56 float latitude;
runesla 0:1a8299deb917 57
runesla 2:e7f24389167b 58 /**
runesla 2:e7f24389167b 59 * The time (call sample() to set)
runesla 2:e7f24389167b 60 */
runesla 2:e7f24389167b 61 float time;
runesla 0:1a8299deb917 62
runesla 2:e7f24389167b 63 /**
runesla 2:e7f24389167b 64 * Number of satellites received (call sample() to set)
runesla 2:e7f24389167b 65 */
runesla 2:e7f24389167b 66 int sats;
runesla 0:1a8299deb917 67
runesla 2:e7f24389167b 68 /**
runesla 2:e7f24389167b 69 * Horizontal dilusion of precision (call sample() to set)
runesla 2:e7f24389167b 70 */
runesla 2:e7f24389167b 71 float hdop;
runesla 0:1a8299deb917 72
runesla 2:e7f24389167b 73 /** The altitude (call sample() to set)
runesla 2:e7f24389167b 74 * Note that the accurate altitude is corrected by the geoid
runesla 2:e7f24389167b 75 * See http://homepages.slingshot.co.nz/~geoff36/datum.htm
runesla 2:e7f24389167b 76 */
runesla 2:e7f24389167b 77 float alt;
runesla 0:1a8299deb917 78
runesla 2:e7f24389167b 79 /**
runesla 2:e7f24389167b 80 * The geoid (call sample() to set)
runesla 2:e7f24389167b 81 */
runesla 2:e7f24389167b 82 float geoid;
runesla 0:1a8299deb917 83
runesla 2:e7f24389167b 84 /**
runesla 2:e7f24389167b 85 * The NMEA sentence
runesla 2:e7f24389167b 86 */
runesla 2:e7f24389167b 87 char msg[256];
runesla 0:1a8299deb917 88
runesla 2:e7f24389167b 89 private:
runesla 2:e7f24389167b 90 float trunc(float v);
runesla 2:e7f24389167b 91 void getline();
runesla 2:e7f24389167b 92 BufferedSerial* _gps_p;
runesla 2:e7f24389167b 93 BufferedSerial& _gps;
runesla 0:1a8299deb917 94 };
runesla 0:1a8299deb917 95
runesla 0:1a8299deb917 96 #endif