mirror of https://github.com/ArduPilot/ardupilot
AP_GPS: cycle through baud rates for SBF/GSOF/NOVA/SITL
This commit is contained in:
parent
a56ed66aa3
commit
3a3f9bdb84
|
@ -693,6 +693,29 @@ AP_GPS_Backend *AP_GPS::_detect_instance(uint8_t instance)
|
||||||
// all remaining drivers automatically cycle through baud rates to detect
|
// all remaining drivers automatically cycle through baud rates to detect
|
||||||
// the correct baud rate, and should have the selected baud broadcast
|
// the correct baud rate, and should have the selected baud broadcast
|
||||||
dstate->auto_detected_baud = true;
|
dstate->auto_detected_baud = true;
|
||||||
|
const uint32_t now = AP_HAL::millis();
|
||||||
|
|
||||||
|
if (now - dstate->last_baud_change_ms > GPS_BAUD_TIME_MS) {
|
||||||
|
// try the next baud rate
|
||||||
|
// incrementing like this will skip the first element in array of bauds
|
||||||
|
// this is okay, and relied upon
|
||||||
|
dstate->current_baud++;
|
||||||
|
if (dstate->current_baud == ARRAY_SIZE(_baudrates)) {
|
||||||
|
dstate->current_baud = 0;
|
||||||
|
}
|
||||||
|
uint32_t baudrate = _baudrates[dstate->current_baud];
|
||||||
|
_port[instance]->begin(baudrate);
|
||||||
|
_port[instance]->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
||||||
|
dstate->last_baud_change_ms = now;
|
||||||
|
|
||||||
|
if (_auto_config >= GPS_AUTO_CONFIG_ENABLE_SERIAL_ONLY) {
|
||||||
|
send_blob_start(instance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_auto_config >= GPS_AUTO_CONFIG_ENABLE_SERIAL_ONLY) {
|
||||||
|
send_blob_update(instance);
|
||||||
|
}
|
||||||
|
|
||||||
switch (_type[instance]) {
|
switch (_type[instance]) {
|
||||||
#if AP_GPS_SBF_ENABLED
|
#if AP_GPS_SBF_ENABLED
|
||||||
|
@ -718,30 +741,6 @@ AP_GPS_Backend *AP_GPS::_detect_instance(uint8_t instance)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint32_t now = AP_HAL::millis();
|
|
||||||
|
|
||||||
if (now - dstate->last_baud_change_ms > GPS_BAUD_TIME_MS) {
|
|
||||||
// try the next baud rate
|
|
||||||
// incrementing like this will skip the first element in array of bauds
|
|
||||||
// this is okay, and relied upon
|
|
||||||
dstate->current_baud++;
|
|
||||||
if (dstate->current_baud == ARRAY_SIZE(_baudrates)) {
|
|
||||||
dstate->current_baud = 0;
|
|
||||||
}
|
|
||||||
uint32_t baudrate = _baudrates[dstate->current_baud];
|
|
||||||
_port[instance]->begin(baudrate);
|
|
||||||
_port[instance]->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
|
||||||
dstate->last_baud_change_ms = now;
|
|
||||||
|
|
||||||
if (_auto_config >= GPS_AUTO_CONFIG_ENABLE_SERIAL_ONLY) {
|
|
||||||
send_blob_start(instance);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_auto_config >= GPS_AUTO_CONFIG_ENABLE_SERIAL_ONLY) {
|
|
||||||
send_blob_update(instance);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (initblob_state[instance].remaining != 0) {
|
if (initblob_state[instance].remaining != 0) {
|
||||||
// don't run detection engines if we haven't sent out the initblobs
|
// don't run detection engines if we haven't sent out the initblobs
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
Loading…
Reference in New Issue