AP_GPS: make NMEA driver a bit easier to read

thanks to crashpilot100
This commit is contained in:
Andrew Tridgell 2014-11-16 14:12:14 +11:00
parent b81b9e1bb8
commit 809ff15b43

View File

@ -94,6 +94,7 @@ const char AP_GPS_NMEA::_gpvtg_string[] PROGMEM = "GPVTG";
// Convenience macros //////////////////////////////////////////////////////////
//
#define DIGIT_TO_VAL(_x) (_x - '0')
#define hexdigit(x) ((x)>9?'A'+(x):'0'+(x))
AP_GPS_NMEA::AP_GPS_NMEA(AP_GPS &_gps, AP_GPS::GPS_State &_state, AP_HAL::UARTDriver *_port) :
AP_GPS_Backend(_gps, _state, _port),
@ -181,9 +182,9 @@ uint32_t AP_GPS_NMEA::_parse_decimal_100()
++p;
if (*p == '.') {
if (isdigit(p[1])) {
ret += 10 * (p[1] - '0');
ret += 10 * DIGIT_TO_VAL(p[1]);
if (isdigit(p[2]))
ret += p[2] - '0';
ret += DIGIT_TO_VAL(p[2]);
}
}
return ret;
@ -223,7 +224,8 @@ uint32_t AP_GPS_NMEA::_parse_degrees()
q = p + 1;
float frac_scale = 0.1f;
while (*q && isdigit(*q)) {
frac_min += (*q++ - '0') * frac_scale;
frac_min += DIGIT_TO_VAL(*q) * frac_scale;
q++;
frac_scale *= 0.1f;
}
}
@ -375,8 +377,6 @@ bool AP_GPS_NMEA::_term_complete()
return false;
}
#define hexdigit(x) ((x)>9?'A'+(x):'0'+(x))
/*
detect a NMEA GPS. Adds one byte, and returns true if the stream
matches a NMEA string