AP_GPS: parse RTK status in NMEA GGA message
This commit is contained in:
parent
2f8f2ffd2d
commit
02cfe9128d
@ -259,8 +259,6 @@ bool AP_GPS_NMEA::_term_complete()
|
||||
state.ground_course = wrap_360(_new_course*0.01f);
|
||||
make_gps_time(_new_date, _new_time * 10);
|
||||
state.last_gps_time_ms = now;
|
||||
// To-Do: add support for proper reporting of 2D and 3D fix
|
||||
state.status = AP_GPS::GPS_OK_FIX_3D;
|
||||
fill_3d_velocity();
|
||||
break;
|
||||
case _GPS_SENTENCE_GGA:
|
||||
@ -270,8 +268,32 @@ bool AP_GPS_NMEA::_term_complete()
|
||||
state.location.lng = _new_longitude;
|
||||
state.num_sats = _new_satellite_count;
|
||||
state.hdop = _new_hdop;
|
||||
// To-Do: add support for proper reporting of 2D and 3D fix
|
||||
state.status = AP_GPS::GPS_OK_FIX_3D;
|
||||
switch(_new_quality_indicator) {
|
||||
case 0: // Fix not available or invalid
|
||||
state.status = AP_GPS::NO_FIX;
|
||||
break;
|
||||
case 1: // GPS SPS Mode, fix valid
|
||||
state.status = AP_GPS::GPS_OK_FIX_3D;
|
||||
break;
|
||||
case 2: // Differential GPS, SPS Mode, fix valid
|
||||
state.status = AP_GPS::GPS_OK_FIX_3D_DGPS;
|
||||
break;
|
||||
case 3: // GPS PPS Mode, fix valid
|
||||
state.status = AP_GPS::GPS_OK_FIX_3D;
|
||||
break;
|
||||
case 4: // Real Time Kinematic. System used in RTK mode with fixed integers
|
||||
state.status = AP_GPS::GPS_OK_FIX_3D_RTK_FIXED;
|
||||
break;
|
||||
case 5: // Float RTK. Satellite system used in RTK mode, floating integers
|
||||
state.status = AP_GPS::GPS_OK_FIX_3D_RTK_FLOAT;
|
||||
break;
|
||||
case 6: // Estimated (dead reckoning) Mode
|
||||
state.status = AP_GPS::NO_FIX;
|
||||
break;
|
||||
default://to maintain compatibility with MAV_GPS_INPUT and others
|
||||
state.status = AP_GPS::GPS_OK_FIX_3D;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case _GPS_SENTENCE_VTG:
|
||||
_last_VTG_ms = now;
|
||||
@ -335,6 +357,7 @@ bool AP_GPS_NMEA::_term_complete()
|
||||
break;
|
||||
case _GPS_SENTENCE_GGA + 6: // Fix data (GGA)
|
||||
_gps_data_good = _term[0] > '0';
|
||||
_new_quality_indicator = _term[0] - '0';
|
||||
break;
|
||||
case _GPS_SENTENCE_VTG + 9: // validity (VTG) (we may not see this field)
|
||||
_gps_data_good = _term[0] != 'N';
|
||||
|
@ -139,6 +139,7 @@ private:
|
||||
int32_t _new_course; ///< course parsed from a term
|
||||
uint16_t _new_hdop; ///< HDOP parsed from a term
|
||||
uint8_t _new_satellite_count; ///< satellite count parsed from a term
|
||||
uint8_t _new_quality_indicator; ///< GPS quality indicator parsed from a term
|
||||
|
||||
uint32_t _last_RMC_ms = 0;
|
||||
uint32_t _last_GGA_ms = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user