diff --git a/ublox_gps/include/ublox_gps/callback.hpp b/ublox_gps/include/ublox_gps/callback.hpp index 819a8ea9..0fe94fbb 100644 --- a/ublox_gps/include/ublox_gps/callback.hpp +++ b/ublox_gps/include/ublox_gps/callback.hpp @@ -29,6 +29,7 @@ #ifndef UBLOX_GPS_CALLBACK_HPP #define UBLOX_GPS_CALLBACK_HPP +#include #include #include #include @@ -203,6 +204,9 @@ class CallbackHandlers final { size_t nmea_end = buffer.find('\n', nmea_start); while(nmea_start != std::string::npos && nmea_end != std::string::npos) { std::string sentence = buffer.substr(nmea_start, nmea_end - nmea_start + 1); + // Strip null characters that may be present in binary data misidentified + // as NMEA. FastCDR >= 2.2.7 throws BadParamException on strings with nulls. + sentence.erase(std::remove(sentence.begin(), sentence.end(), '\0'), sentence.end()); callback_nmea_(sentence); nmea_start = buffer.find('$', nmea_end + 1);