summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/GPSService.cpp24
-rw-r--r--src/NumberConversion.cpp10
2 files changed, 33 insertions, 1 deletions
diff --git a/src/GPSService.cpp b/src/GPSService.cpp
index 65bf79f..74e1c9c 100644
--- a/src/GPSService.cpp
+++ b/src/GPSService.cpp
@@ -79,18 +79,42 @@ void GPSService::attachToParser(NMEAParser& _parser){
_parser.setSentenceHandler("GPGGA", [this](const NMEASentence& nmea){
this->read_GPGGA(nmea);
});
+ _parser.setSentenceHandler("GNGGA", [this](const NMEASentence& nmea){
+ this->read_GPGGA(nmea);
+ });
_parser.setSentenceHandler("GPGSA", [this](const NMEASentence& nmea){
this->read_GPGSA(nmea);
});
+ _parser.setSentenceHandler("GLGSA", [this](const NMEASentence& nmea){
+ this->read_GPGSA(nmea);
+ });
+ _parser.setSentenceHandler("GNGSA", [this](const NMEASentence& nmea){
+ this->read_GPGSA(nmea);
+ });
+ _parser.setSentenceHandler("BDGSA", [this](const NMEASentence& nmea){
+ this->read_GPGSA(nmea);
+ });
_parser.setSentenceHandler("GPGSV", [this](const NMEASentence& nmea){
this->read_GPGSV(nmea);
});
+ _parser.setSentenceHandler("BDGSV", [this](const NMEASentence& nmea){
+ this->read_GPGSV(nmea);
+ });
+ _parser.setSentenceHandler("GLGSV", [this](const NMEASentence& nmea){
+ this->read_GPGSV(nmea);
+ });
_parser.setSentenceHandler("GPRMC", [this](const NMEASentence& nmea){
this->read_GPRMC(nmea);
});
+ _parser.setSentenceHandler("GNRMC", [this](const NMEASentence& nmea){
+ this->read_GPRMC(nmea);
+ });
_parser.setSentenceHandler("GPVTG", [this](const NMEASentence& nmea){
this->read_GPVTG(nmea);
});
+ _parser.setSentenceHandler("GNVTG", [this](const NMEASentence& nmea){
+ this->read_GPVTG(nmea);
+ });
}
diff --git a/src/NumberConversion.cpp b/src/NumberConversion.cpp
index 9638b88..9ae6423 100644
--- a/src/NumberConversion.cpp
+++ b/src/NumberConversion.cpp
@@ -20,10 +20,14 @@ namespace nmea {
char* p;
double d = ::strtod(s.c_str(), &p);
if (*p != 0){
+#if STRICT_PARSING
std::stringstream ss;
ss << "NumberConversionError: parseDouble() error in argument \"" << s << "\", '"
<< *p << "' is not a number.";
throw NumberConversionError(ss.str());
+#else
+ d = 0;
+#endif
}
return d;
}
@@ -33,10 +37,14 @@ namespace nmea {
int64_t d = ::strtoll(s.c_str(), &p, radix);
if (*p != 0) {
+#if STRICT_PARSING
std::stringstream ss;
ss << "NumberConversionError: parseInt() error in argument \"" << s << "\", '"
<< *p << "' is not a number.";
throw NumberConversionError(ss.str());
+#else
+ d = 0;
+#endif
}
return d;
}
@@ -144,4 +152,4 @@ void NumberConversion_test(){
}
}
- */ \ No newline at end of file
+ */