From 2a1649ace6a5cd9f9d075fadb1391a9e275fd692 Mon Sep 17 00:00:00 2001 From: f0xx Date: Thu, 29 Oct 2020 14:22:18 +0300 Subject: applying glonass/beidu handlers --- src/GPSService.cpp | 24 ++++++++++++++++++++++++ src/NumberConversion.cpp | 10 +++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) (limited to 'src') 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 + */ -- cgit v1.2.3