Soldered L86 M33 GNSS Library 1.0.0
Arduino library for communication with Soldered L86-M33 GNSS module
Loading...
Searching...
No Matches
TinyGPS++.h
Go to the documentation of this file.
1/*
2TinyGPS++ - a small GPS library for Arduino providing universal NMEA parsing
3Based on work by and "distanceBetween" and "courseTo" courtesy of Maarten Lamers.
4Suggestion to add satellites, courseTo(), and cardinal() by Matt Monson.
5Location precision improvements suggested by Wayne Holder.
6Copyright (C) 2008-2022 Mikal Hart
7All rights reserved.
8
9This library is free software; you can redistribute it and/or
10modify it under the terms of the GNU Lesser General Public
11License as published by the Free Software Foundation; either
12version 2.1 of the License, or (at your option) any later version.
13
14This library is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17Lesser General Public License for more details.
18
19You should have received a copy of the GNU Lesser General Public
20License along with this library; if not, write to the Free Software
21Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22*/
23
24#ifndef __TinyGPSPlus_h
25#define __TinyGPSPlus_h
26
27#if defined(ARDUINO) && ARDUINO >= 100
28#include "Arduino.h"
29#else
30#include "WProgram.h"
31#endif
32#include <limits.h>
33
34#define _GPS_VERSION "1.0.3" // software version of this library
35#define _GPS_MPH_PER_KNOT 1.15077945
36#define _GPS_MPS_PER_KNOT 0.51444444
37#define _GPS_KMPH_PER_KNOT 1.852
38#define _GPS_MILES_PER_METER 0.00062137112
39#define _GPS_KM_PER_METER 0.001
40#define _GPS_FEET_PER_METER 3.2808399
41#define _GPS_MAX_FIELD_SIZE 15
42
44{
45 uint16_t deg;
46 uint32_t billionths;
48public:
49 RawDegrees() : deg(0), billionths(0), negative(false)
50 {}
51};
52
54{
55 friend class TinyGPSPlus;
56public:
57 bool isValid() const { return valid; }
58 bool isUpdated() const { return updated; }
59 uint32_t age() const { return valid ? millis() - lastCommitTime : (uint32_t)ULONG_MAX; }
60 const RawDegrees &rawLat() { updated = false; return rawLatData; }
61 const RawDegrees &rawLng() { updated = false; return rawLngData; }
62 double lat();
63 double lng();
64
65 TinyGPSLocation() : valid(false), updated(false)
66 {}
67
68private:
72 void commit();
73 void setLatitude(const char *term);
74 void setLongitude(const char *term);
75};
76
78{
79 friend class TinyGPSPlus;
80public:
81 bool isValid() const { return valid; }
82 bool isUpdated() const { return updated; }
83 uint32_t age() const { return valid ? millis() - lastCommitTime : (uint32_t)ULONG_MAX; }
84
85 uint32_t value() { updated = false; return date; }
86 uint16_t year();
87 uint8_t month();
88 uint8_t day();
89
90 TinyGPSDate() : valid(false), updated(false), date(0)
91 {}
92
93private:
95 uint32_t date, newDate;
97 void commit();
98 void setDate(const char *term);
99};
100
102{
103 friend class TinyGPSPlus;
104public:
105 bool isValid() const { return valid; }
106 bool isUpdated() const { return updated; }
107 uint32_t age() const { return valid ? millis() - lastCommitTime : (uint32_t)ULONG_MAX; }
108
109 uint32_t value() { updated = false; return time; }
110 uint8_t hour();
111 uint8_t minute();
112 uint8_t second();
113 uint8_t centisecond();
114
115 TinyGPSTime() : valid(false), updated(false), time(0)
116 {}
117
118private:
120 uint32_t time, newTime;
122 void commit();
123 void setTime(const char *term);
124};
125
127{
128 friend class TinyGPSPlus;
129public:
130 bool isValid() const { return valid; }
131 bool isUpdated() const { return updated; }
132 uint32_t age() const { return valid ? millis() - lastCommitTime : (uint32_t)ULONG_MAX; }
133 int32_t value() { updated = false; return val; }
134
135 TinyGPSDecimal() : valid(false), updated(false), val(0)
136 {}
137
138private:
141 int32_t val, newval;
142 void commit();
143 void set(const char *term);
144};
145
147{
148 friend class TinyGPSPlus;
149public:
150 bool isValid() const { return valid; }
151 bool isUpdated() const { return updated; }
152 uint32_t age() const { return valid ? millis() - lastCommitTime : (uint32_t)ULONG_MAX; }
153 uint32_t value() { updated = false; return val; }
154
155 TinyGPSInteger() : valid(false), updated(false), val(0)
156 {}
157
158private:
161 uint32_t val, newval;
162 void commit();
163 void set(const char *term);
164};
165
167{
168 double knots() { return value() / 100.0; }
169 double mph() { return _GPS_MPH_PER_KNOT * value() / 100.0; }
170 double mps() { return _GPS_MPS_PER_KNOT * value() / 100.0; }
171 double kmph() { return _GPS_KMPH_PER_KNOT * value() / 100.0; }
172};
173
175{
176 double deg() { return value() / 100.0; }
177};
178
180{
181 double meters() { return value() / 100.0; }
182 double miles() { return _GPS_MILES_PER_METER * value() / 100.0; }
183 double kilometers() { return _GPS_KM_PER_METER * value() / 100.0; }
184 double feet() { return _GPS_FEET_PER_METER * value() / 100.0; }
185};
186
188{
189 double hdop() { return value() / 100.0; }
190};
191
192class TinyGPSPlus;
194{
195public:
197 TinyGPSCustom(TinyGPSPlus &gps, const char *sentenceName, int termNumber);
198 void begin(TinyGPSPlus &gps, const char *_sentenceName, int _termNumber);
199
200 bool isUpdated() const { return updated; }
201 bool isValid() const { return valid; }
202 uint32_t age() const { return valid ? millis() - lastCommitTime : (uint32_t)ULONG_MAX; }
203 const char *value() { updated = false; return buffer; }
204
205private:
206 void commit();
207 void set(const char *term);
208
209 char stagingBuffer[_GPS_MAX_FIELD_SIZE + 1];
210 char buffer[_GPS_MAX_FIELD_SIZE + 1];
211 unsigned long lastCommitTime;
213 const char *sentenceName;
215 friend class TinyGPSPlus;
217};
218
220{
221public:
222 TinyGPSPlus();
223 bool encode(char c); // process one character received from GPS
224 TinyGPSPlus &operator << (char c) {encode(c); return *this;}
225
234
235 static const char *libraryVersion() { return _GPS_VERSION; }
236
237 static double distanceBetween(double lat1, double long1, double lat2, double long2);
238 static double courseTo(double lat1, double long1, double lat2, double long2);
239 static const char *cardinal(double course);
240
241 static int32_t parseDecimal(const char *term);
242 static void parseDegrees(const char *term, RawDegrees &deg);
243
244 uint32_t charsProcessed() const { return encodedCharCount; }
245 uint32_t sentencesWithFix() const { return sentencesWithFixCount; }
246 uint32_t failedChecksum() const { return failedChecksumCount; }
247 uint32_t passedChecksum() const { return passedChecksumCount; }
248
249private:
251
252 // parsing state variables
253 uint8_t parity;
255 char term[_GPS_MAX_FIELD_SIZE];
260
261 // custom element support
262 friend class TinyGPSCustom;
265 void insertCustom(TinyGPSCustom *pElt, const char *sentenceName, int index);
266
267 // statistics
272
273 // internal utilities
274 int fromHex(char a);
275 bool endOfTermHandler();
276};
277
278#endif // def(__TinyGPSPlus_h)
Definition: TinyGPS++.h:194
const char * value()
Definition: TinyGPS++.h:203
void begin(TinyGPSPlus &gps, const char *_sentenceName, int _termNumber)
Definition: TinyGPS++.cpp:465
void commit()
Definition: TinyGPS++.cpp:478
bool valid
Definition: TinyGPS++.h:212
bool isValid() const
Definition: TinyGPS++.h:201
char stagingBuffer[_GPS_MAX_FIELD_SIZE+1]
Definition: TinyGPS++.h:209
void set(const char *term)
Definition: TinyGPS++.cpp:485
TinyGPSCustom * next
Definition: TinyGPS++.h:216
bool updated
Definition: TinyGPS++.h:212
const char * sentenceName
Definition: TinyGPS++.h:213
bool isUpdated() const
Definition: TinyGPS++.h:200
TinyGPSCustom()
Definition: TinyGPS++.h:196
unsigned long lastCommitTime
Definition: TinyGPS++.h:211
int termNumber
Definition: TinyGPS++.h:214
uint32_t age() const
Definition: TinyGPS++.h:202
char buffer[_GPS_MAX_FIELD_SIZE+1]
Definition: TinyGPS++.h:210
Definition: TinyGPS++.h:220
uint32_t passedChecksumCount
Definition: TinyGPS++.h:271
static void parseDegrees(const char *term, RawDegrees &deg)
Definition: TinyGPS++.cpp:132
TinyGPSPlus & operator<<(char c)
Definition: TinyGPS++.h:224
static int32_t parseDecimal(const char *term)
Definition: TinyGPS++.cpp:115
TinyGPSAltitude altitude
Definition: TinyGPS++.h:231
TinyGPSHDOP hdop
Definition: TinyGPS++.h:233
bool isChecksumTerm
Definition: TinyGPS++.h:254
uint8_t curTermOffset
Definition: TinyGPS++.h:258
uint32_t sentencesWithFixCount
Definition: TinyGPS++.h:269
TinyGPSTime time
Definition: TinyGPS++.h:228
TinyGPSPlus()
Definition: TinyGPS++.cpp:35
uint32_t passedChecksum() const
Definition: TinyGPS++.h:247
uint8_t curTermNumber
Definition: TinyGPS++.h:257
TinyGPSInteger satellites
Definition: TinyGPS++.h:232
uint32_t sentencesWithFix() const
Definition: TinyGPS++.h:245
uint32_t encodedCharCount
Definition: TinyGPS++.h:268
TinyGPSCustom * customElts
Definition: TinyGPS++.h:263
TinyGPSDate date
Definition: TinyGPS++.h:227
TinyGPSLocation location
Definition: TinyGPS++.h:226
uint8_t curSentenceType
Definition: TinyGPS++.h:256
static const char * cardinal(double course)
Definition: TinyGPS++.cpp:330
@ GPS_SENTENCE_GPGGA
Definition: TinyGPS++.h:250
@ GPS_SENTENCE_OTHER
Definition: TinyGPS++.h:250
@ GPS_SENTENCE_GPRMC
Definition: TinyGPS++.h:250
static const char * libraryVersion()
Definition: TinyGPS++.h:235
int fromHex(char a)
Definition: TinyGPS++.cpp:103
TinyGPSSpeed speed
Definition: TinyGPS++.h:229
char term[_GPS_MAX_FIELD_SIZE]
Definition: TinyGPS++.h:255
uint32_t failedChecksumCount
Definition: TinyGPS++.h:270
static double distanceBetween(double lat1, double long1, double lat2, double long2)
Definition: TinyGPS++.cpp:285
bool endOfTermHandler()
Definition: TinyGPS++.cpp:159
TinyGPSCourse course
Definition: TinyGPS++.h:230
bool encode(char c)
Definition: TinyGPS++.cpp:56
TinyGPSCustom * customCandidates
Definition: TinyGPS++.h:264
uint32_t charsProcessed() const
Definition: TinyGPS++.h:244
uint8_t parity
Definition: TinyGPS++.h:253
static double courseTo(double lat1, double long1, double lat2, double long2)
Definition: TinyGPS++.cpp:310
bool sentenceHasFix
Definition: TinyGPS++.h:259
uint32_t failedChecksum() const
Definition: TinyGPS++.h:246
void insertCustom(TinyGPSCustom *pElt, const char *sentenceName, int index)
Definition: TinyGPS++.cpp:490
Definition: TinyGPS++.h:44
uint16_t deg
Definition: TinyGPS++.h:45
uint32_t billionths
Definition: TinyGPS++.h:46
RawDegrees()
Definition: TinyGPS++.h:49
bool negative
Definition: TinyGPS++.h:47
Definition: TinyGPS++.h:180
double kilometers()
Definition: TinyGPS++.h:183
double meters()
Definition: TinyGPS++.h:181
double miles()
Definition: TinyGPS++.h:182
double feet()
Definition: TinyGPS++.h:184
Definition: TinyGPS++.h:175
double deg()
Definition: TinyGPS++.h:176
Definition: TinyGPS++.h:78
bool isUpdated() const
Definition: TinyGPS++.h:82
void setDate(const char *term)
Definition: TinyGPS++.cpp:388
bool isValid() const
Definition: TinyGPS++.h:81
TinyGPSDate()
Definition: TinyGPS++.h:90
bool valid
Definition: TinyGPS++.h:94
uint8_t month()
Definition: TinyGPS++.cpp:400
uint32_t value()
Definition: TinyGPS++.h:85
uint32_t newDate
Definition: TinyGPS++.h:95
uint32_t date
Definition: TinyGPS++.h:95
uint32_t lastCommitTime
Definition: TinyGPS++.h:96
uint16_t year()
Definition: TinyGPS++.cpp:393
uint8_t day()
Definition: TinyGPS++.cpp:406
void commit()
Definition: TinyGPS++.cpp:369
uint32_t age() const
Definition: TinyGPS++.h:83
bool updated
Definition: TinyGPS++.h:94
Definition: TinyGPS++.h:127
uint32_t age() const
Definition: TinyGPS++.h:132
int32_t val
Definition: TinyGPS++.h:141
bool isValid() const
Definition: TinyGPS++.h:130
void commit()
Definition: TinyGPS++.cpp:436
void set(const char *term)
Definition: TinyGPS++.cpp:443
bool valid
Definition: TinyGPS++.h:139
bool isUpdated() const
Definition: TinyGPS++.h:131
uint32_t lastCommitTime
Definition: TinyGPS++.h:140
int32_t value()
Definition: TinyGPS++.h:133
int32_t newval
Definition: TinyGPS++.h:141
TinyGPSDecimal()
Definition: TinyGPS++.h:135
bool updated
Definition: TinyGPS++.h:139
Definition: TinyGPS++.h:188
double hdop()
Definition: TinyGPS++.h:189
Definition: TinyGPS++.h:147
TinyGPSInteger()
Definition: TinyGPS++.h:155
void commit()
Definition: TinyGPS++.cpp:448
bool valid
Definition: TinyGPS++.h:159
uint32_t val
Definition: TinyGPS++.h:161
bool isUpdated() const
Definition: TinyGPS++.h:151
bool isValid() const
Definition: TinyGPS++.h:150
uint32_t value()
Definition: TinyGPS++.h:153
uint32_t newval
Definition: TinyGPS++.h:161
bool updated
Definition: TinyGPS++.h:159
void set(const char *term)
Definition: TinyGPS++.cpp:455
uint32_t age() const
Definition: TinyGPS++.h:152
uint32_t lastCommitTime
Definition: TinyGPS++.h:160
Definition: TinyGPS++.h:54
RawDegrees rawLatData
Definition: TinyGPS++.h:70
uint32_t lastCommitTime
Definition: TinyGPS++.h:71
RawDegrees rawNewLngData
Definition: TinyGPS++.h:70
const RawDegrees & rawLng()
Definition: TinyGPS++.h:61
double lng()
Definition: TinyGPS++.cpp:362
RawDegrees rawNewLatData
Definition: TinyGPS++.h:70
bool updated
Definition: TinyGPS++.h:69
RawDegrees rawLngData
Definition: TinyGPS++.h:70
double lat()
Definition: TinyGPS++.cpp:355
bool valid
Definition: TinyGPS++.h:69
bool isUpdated() const
Definition: TinyGPS++.h:58
TinyGPSLocation()
Definition: TinyGPS++.h:65
bool isValid() const
Definition: TinyGPS++.h:57
void commit()
Definition: TinyGPS++.cpp:337
void setLatitude(const char *term)
Definition: TinyGPS++.cpp:345
const RawDegrees & rawLat()
Definition: TinyGPS++.h:60
void setLongitude(const char *term)
Definition: TinyGPS++.cpp:350
uint32_t age() const
Definition: TinyGPS++.h:59
Definition: TinyGPS++.h:167
double mph()
Definition: TinyGPS++.h:169
double kmph()
Definition: TinyGPS++.h:171
double knots()
Definition: TinyGPS++.h:168
double mps()
Definition: TinyGPS++.h:170
Definition: TinyGPS++.h:102
void setTime(const char *term)
Definition: TinyGPS++.cpp:383
bool isUpdated() const
Definition: TinyGPS++.h:106
uint8_t centisecond()
Definition: TinyGPS++.cpp:430
uint8_t hour()
Definition: TinyGPS++.cpp:412
uint32_t lastCommitTime
Definition: TinyGPS++.h:121
bool isValid() const
Definition: TinyGPS++.h:105
uint8_t second()
Definition: TinyGPS++.cpp:424
void commit()
Definition: TinyGPS++.cpp:376
bool updated
Definition: TinyGPS++.h:119
bool valid
Definition: TinyGPS++.h:119
uint32_t newTime
Definition: TinyGPS++.h:120
TinyGPSTime()
Definition: TinyGPS++.h:115
uint32_t age() const
Definition: TinyGPS++.h:107
uint32_t time
Definition: TinyGPS++.h:120
uint8_t minute()
Definition: TinyGPS++.cpp:418
uint32_t value()
Definition: TinyGPS++.h:109