Browse Source

AP_MSP: fix for multiple backends initialization

zr-v5.1
yaapu 4 years ago committed by Andrew Tridgell
parent
commit
42b85c88ed
  1. 12
      libraries/AP_MSP/AP_MSP.cpp

12
libraries/AP_MSP/AP_MSP.cpp

@ -79,33 +79,29 @@ bool AP_MSP::init_backend(uint8_t backend_idx, AP_HAL::UARTDriver *uart, AP_Seri @@ -79,33 +79,29 @@ bool AP_MSP::init_backend(uint8_t backend_idx, AP_HAL::UARTDriver *uart, AP_Seri
void AP_MSP::init()
{
const AP_SerialManager &serial_manager = AP::serialmanager();
uint8_t backend_instance = 0;
AP_HAL::UARTDriver *uart = nullptr;
// DJI FPV backends
for (uint8_t protocol_instance=0; protocol_instance<MSP_MAX_INSTANCES; protocol_instance++) {
uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_DJI_FPV, backend_instance);
uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_DJI_FPV, protocol_instance);
if (uart != nullptr) {
if (!init_backend(protocol_instance, uart, AP_SerialManager::SerialProtocol_DJI_FPV)) {
if (!init_backend(_msp_status.backend_count, uart, AP_SerialManager::SerialProtocol_DJI_FPV)) {
break;
}
// initialize osd settings from OSD backend
if (!_msp_status.osd_initialized) {
init_osd();
}
backend_instance++;
_msp_status.backend_count++;
}
}
backend_instance = 0;
// generic MSP backends
for (uint8_t protocol_instance=0; protocol_instance<MSP_MAX_INSTANCES-_msp_status.backend_count; protocol_instance++) {
uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_MSP, backend_instance);
uart = serial_manager.find_serial(AP_SerialManager::SerialProtocol_MSP, protocol_instance);
if (uart != nullptr) {
if (!init_backend(protocol_instance, uart, AP_SerialManager::SerialProtocol_MSP)) {
if (!init_backend(_msp_status.backend_count, uart, AP_SerialManager::SerialProtocol_MSP)) {
break;
}
backend_instance++;
_msp_status.backend_count++;
}
}

Loading…
Cancel
Save