mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-05 07:28:29 -04:00
AP_GPS: move gps blob initialisation out to method
This commit is contained in:
parent
13464ebb20
commit
4b6590734a
@ -553,6 +553,32 @@ void AP_GPS::send_blob_start(uint8_t instance, const char *_blob, uint16_t size)
|
|||||||
initblob_state[instance].remaining = size;
|
initblob_state[instance].remaining = size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
initialise state for sending binary blob initialisation strings
|
||||||
|
*/
|
||||||
|
void AP_GPS::send_blob_start(uint8_t instance)
|
||||||
|
{
|
||||||
|
if (_type[instance] == GPS_TYPE_UBLOX && (_driver_options & AP_GPS_Backend::DriverOptions::UBX_Use115200)) {
|
||||||
|
static const char blob[] = UBLOX_SET_BINARY_115200;
|
||||||
|
send_blob_start(instance, blob, sizeof(blob));
|
||||||
|
} else if ((_type[instance] == GPS_TYPE_UBLOX_RTK_BASE ||
|
||||||
|
_type[instance] == GPS_TYPE_UBLOX_RTK_ROVER) &&
|
||||||
|
((_driver_options.get() & AP_GPS_Backend::DriverOptions::UBX_MBUseUart2) == 0)) {
|
||||||
|
// we use 460800 when doing moving baseline as we need
|
||||||
|
// more bandwidth. We don't do this if using UART2, as
|
||||||
|
// in that case the RTCMv3 data doesn't go over the
|
||||||
|
// link to the flight controller
|
||||||
|
static const char blob[] = UBLOX_SET_BINARY_460800;
|
||||||
|
send_blob_start(instance, blob, sizeof(blob));
|
||||||
|
#if AP_GPS_NMEA_ENABLED
|
||||||
|
} else if (_type[instance] == GPS_TYPE_HEMI) {
|
||||||
|
send_blob_start(instance, AP_GPS_NMEA_HEMISPHERE_INIT_STRING, strlen(AP_GPS_NMEA_HEMISPHERE_INIT_STRING));
|
||||||
|
#endif // AP_GPS_NMEA_ENABLED
|
||||||
|
} else {
|
||||||
|
send_blob_start(instance, _initialisation_blob, sizeof(_initialisation_blob));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
send some more initialisation string bytes if there is room in the
|
send some more initialisation string bytes if there is room in the
|
||||||
UART transmit buffer
|
UART transmit buffer
|
||||||
@ -684,25 +710,7 @@ void AP_GPS::detect_instance(uint8_t instance)
|
|||||||
dstate->last_baud_change_ms = now;
|
dstate->last_baud_change_ms = now;
|
||||||
|
|
||||||
if (_auto_config >= GPS_AUTO_CONFIG_ENABLE_SERIAL_ONLY && new_gps == nullptr) {
|
if (_auto_config >= GPS_AUTO_CONFIG_ENABLE_SERIAL_ONLY && new_gps == nullptr) {
|
||||||
if (_type[instance] == GPS_TYPE_UBLOX && (_driver_options & AP_GPS_Backend::DriverOptions::UBX_Use115200)) {
|
send_blob_start(instance);
|
||||||
static const char blob[] = UBLOX_SET_BINARY_115200;
|
|
||||||
send_blob_start(instance, blob, sizeof(blob));
|
|
||||||
} else if ((_type[instance] == GPS_TYPE_UBLOX_RTK_BASE ||
|
|
||||||
_type[instance] == GPS_TYPE_UBLOX_RTK_ROVER) &&
|
|
||||||
((_driver_options.get() & AP_GPS_Backend::DriverOptions::UBX_MBUseUart2) == 0)) {
|
|
||||||
// we use 460800 when doing moving baseline as we need
|
|
||||||
// more bandwidth. We don't do this if using UART2, as
|
|
||||||
// in that case the RTCMv3 data doesn't go over the
|
|
||||||
// link to the flight controller
|
|
||||||
static const char blob[] = UBLOX_SET_BINARY_460800;
|
|
||||||
send_blob_start(instance, blob, sizeof(blob));
|
|
||||||
#if AP_GPS_NMEA_ENABLED
|
|
||||||
} else if (_type[instance] == GPS_TYPE_HEMI) {
|
|
||||||
send_blob_start(instance, AP_GPS_NMEA_HEMISPHERE_INIT_STRING, strlen(AP_GPS_NMEA_HEMISPHERE_INIT_STRING));
|
|
||||||
#endif // AP_GPS_NMEA_ENABLED
|
|
||||||
} else {
|
|
||||||
send_blob_start(instance, _initialisation_blob, sizeof(_initialisation_blob));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -473,6 +473,7 @@ public:
|
|||||||
bool blend_health_check() const;
|
bool blend_health_check() const;
|
||||||
|
|
||||||
// handle sending of initialisation strings to the GPS - only used by backends
|
// handle sending of initialisation strings to the GPS - only used by backends
|
||||||
|
void send_blob_start(uint8_t instance);
|
||||||
void send_blob_start(uint8_t instance, const char *_blob, uint16_t size);
|
void send_blob_start(uint8_t instance, const char *_blob, uint16_t size);
|
||||||
void send_blob_update(uint8_t instance);
|
void send_blob_update(uint8_t instance);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user