mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-01-18 06:38:29 -04:00
AP_SerialManager: removed unnecessary uart pointer in state structure
This commit is contained in:
parent
348dfeff6e
commit
5406699ec8
@ -351,10 +351,12 @@ void AP_SerialManager::init_console()
|
|||||||
{
|
{
|
||||||
// initialise console immediately at default size and baud
|
// initialise console immediately at default size and baud
|
||||||
#if SERIALMANAGER_NUM_PORTS > 0
|
#if SERIALMANAGER_NUM_PORTS > 0
|
||||||
state[0].uart = hal.serial(0); // serial0, uartA, always console
|
if (!init_console_done) {
|
||||||
state[0].uart->begin(AP_SERIALMANAGER_CONSOLE_BAUD,
|
init_console_done = true;
|
||||||
AP_SERIALMANAGER_CONSOLE_BUFSIZE_RX,
|
hal.serial(0)->begin(AP_SERIALMANAGER_CONSOLE_BAUD,
|
||||||
AP_SERIALMANAGER_CONSOLE_BUFSIZE_TX);
|
AP_SERIALMANAGER_CONSOLE_BUFSIZE_RX,
|
||||||
|
AP_SERIALMANAGER_CONSOLE_BUFSIZE_TX);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -366,32 +368,6 @@ void AP_SerialManager::init()
|
|||||||
// always reset passthru port2 on boot
|
// always reset passthru port2 on boot
|
||||||
passthru_port2.set_and_save_ifchanged(-1);
|
passthru_port2.set_and_save_ifchanged(-1);
|
||||||
|
|
||||||
// initialise pointers to serial ports
|
|
||||||
#if SERIALMANAGER_NUM_PORTS > 1
|
|
||||||
state[1].uart = hal.serial(1); // serial1, uartC, normally telem1
|
|
||||||
#endif
|
|
||||||
#if SERIALMANAGER_NUM_PORTS > 2
|
|
||||||
state[2].uart = hal.serial(2); // serial2, uartD, normally telem2
|
|
||||||
#endif
|
|
||||||
#if SERIALMANAGER_NUM_PORTS > 3
|
|
||||||
state[3].uart = hal.serial(3); // serial3, uartB, normally 1st GPS
|
|
||||||
#endif
|
|
||||||
#if SERIALMANAGER_NUM_PORTS > 4
|
|
||||||
state[4].uart = hal.serial(4); // serial4, uartE, normally 2nd GPS
|
|
||||||
#endif
|
|
||||||
#if SERIALMANAGER_NUM_PORTS > 5
|
|
||||||
state[5].uart = hal.serial(5); // serial5, uartF, User Configurable
|
|
||||||
#endif
|
|
||||||
#if SERIALMANAGER_NUM_PORTS > 6
|
|
||||||
state[6].uart = hal.serial(6); // serial6, uartG, User Configurable
|
|
||||||
#endif
|
|
||||||
#if SERIALMANAGER_NUM_PORTS > 7
|
|
||||||
state[7].uart = hal.serial(7); // serial7, uartH, User Configurable
|
|
||||||
#endif
|
|
||||||
#if SERIALMANAGER_NUM_PORTS > 8
|
|
||||||
state[8].uart = hal.serial(8); // serial8, uartI, User Configurable
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef HAL_OTG1_CONFIG
|
#ifdef HAL_OTG1_CONFIG
|
||||||
/*
|
/*
|
||||||
prevent users from changing USB protocol to other than
|
prevent users from changing USB protocol to other than
|
||||||
@ -404,16 +380,13 @@ void AP_SerialManager::init()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if SERIALMANAGER_NUM_PORTS > 0
|
init_console();
|
||||||
if (state[0].uart == nullptr) {
|
|
||||||
init_console();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// initialise serial ports
|
// initialise serial ports
|
||||||
for (uint8_t i=1; i<SERIALMANAGER_NUM_PORTS; i++) {
|
for (uint8_t i=1; i<SERIALMANAGER_NUM_PORTS; i++) {
|
||||||
|
auto *uart = hal.serial(i);
|
||||||
|
|
||||||
if (state[i].uart != nullptr) {
|
if (uart != nullptr) {
|
||||||
|
|
||||||
// see if special options have been requested
|
// see if special options have been requested
|
||||||
if (state[i].protocol != SerialProtocol_None && state[i].options) {
|
if (state[i].protocol != SerialProtocol_None && state[i].options) {
|
||||||
@ -426,7 +399,7 @@ void AP_SerialManager::init()
|
|||||||
case SerialProtocol_Console:
|
case SerialProtocol_Console:
|
||||||
case SerialProtocol_MAVLink:
|
case SerialProtocol_MAVLink:
|
||||||
case SerialProtocol_MAVLink2:
|
case SerialProtocol_MAVLink2:
|
||||||
state[i].uart->begin(map_baudrate(state[i].baud),
|
uart->begin(map_baudrate(state[i].baud),
|
||||||
AP_SERIALMANAGER_MAVLINK_BUFSIZE_RX,
|
AP_SERIALMANAGER_MAVLINK_BUFSIZE_RX,
|
||||||
AP_SERIALMANAGER_MAVLINK_BUFSIZE_TX);
|
AP_SERIALMANAGER_MAVLINK_BUFSIZE_TX);
|
||||||
break;
|
break;
|
||||||
@ -443,21 +416,21 @@ void AP_SerialManager::init()
|
|||||||
break;
|
break;
|
||||||
case SerialProtocol_GPS:
|
case SerialProtocol_GPS:
|
||||||
case SerialProtocol_GPS2:
|
case SerialProtocol_GPS2:
|
||||||
state[i].uart->begin(map_baudrate(state[i].baud),
|
uart->begin(map_baudrate(state[i].baud),
|
||||||
AP_SERIALMANAGER_GPS_BUFSIZE_RX,
|
AP_SERIALMANAGER_GPS_BUFSIZE_RX,
|
||||||
AP_SERIALMANAGER_GPS_BUFSIZE_TX);
|
AP_SERIALMANAGER_GPS_BUFSIZE_TX);
|
||||||
break;
|
break;
|
||||||
case SerialProtocol_AlexMos:
|
case SerialProtocol_AlexMos:
|
||||||
// Note baudrate is hardcoded to 115200
|
// Note baudrate is hardcoded to 115200
|
||||||
state[i].baud = AP_SERIALMANAGER_ALEXMOS_BAUD / 1000; // update baud param in case user looks at it
|
state[i].baud = AP_SERIALMANAGER_ALEXMOS_BAUD / 1000; // update baud param in case user looks at it
|
||||||
state[i].uart->begin(AP_SERIALMANAGER_ALEXMOS_BAUD,
|
uart->begin(AP_SERIALMANAGER_ALEXMOS_BAUD,
|
||||||
AP_SERIALMANAGER_ALEXMOS_BUFSIZE_RX,
|
AP_SERIALMANAGER_ALEXMOS_BUFSIZE_RX,
|
||||||
AP_SERIALMANAGER_ALEXMOS_BUFSIZE_TX);
|
AP_SERIALMANAGER_ALEXMOS_BUFSIZE_TX);
|
||||||
break;
|
break;
|
||||||
case SerialProtocol_SToRM32:
|
case SerialProtocol_SToRM32:
|
||||||
// Note baudrate is hardcoded to 115200
|
// Note baudrate is hardcoded to 115200
|
||||||
state[i].baud = AP_SERIALMANAGER_SToRM32_BAUD / 1000; // update baud param in case user looks at it
|
state[i].baud = AP_SERIALMANAGER_SToRM32_BAUD / 1000; // update baud param in case user looks at it
|
||||||
state[i].uart->begin(map_baudrate(state[i].baud),
|
uart->begin(map_baudrate(state[i].baud),
|
||||||
AP_SERIALMANAGER_SToRM32_BUFSIZE_RX,
|
AP_SERIALMANAGER_SToRM32_BUFSIZE_RX,
|
||||||
AP_SERIALMANAGER_SToRM32_BUFSIZE_TX);
|
AP_SERIALMANAGER_SToRM32_BUFSIZE_TX);
|
||||||
break;
|
break;
|
||||||
@ -467,56 +440,56 @@ void AP_SerialManager::init()
|
|||||||
case SerialProtocol_Volz:
|
case SerialProtocol_Volz:
|
||||||
// Note baudrate is hardcoded to 115200
|
// Note baudrate is hardcoded to 115200
|
||||||
state[i].baud = AP_SERIALMANAGER_VOLZ_BAUD; // update baud param in case user looks at it
|
state[i].baud = AP_SERIALMANAGER_VOLZ_BAUD; // update baud param in case user looks at it
|
||||||
state[i].uart->begin(map_baudrate(state[i].baud),
|
uart->begin(map_baudrate(state[i].baud),
|
||||||
AP_SERIALMANAGER_VOLZ_BUFSIZE_RX,
|
AP_SERIALMANAGER_VOLZ_BUFSIZE_RX,
|
||||||
AP_SERIALMANAGER_VOLZ_BUFSIZE_TX);
|
AP_SERIALMANAGER_VOLZ_BUFSIZE_TX);
|
||||||
state[i].uart->set_unbuffered_writes(true);
|
uart->set_unbuffered_writes(true);
|
||||||
state[i].uart->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
uart->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
||||||
break;
|
break;
|
||||||
case SerialProtocol_Sbus1:
|
case SerialProtocol_Sbus1:
|
||||||
state[i].baud = AP_SERIALMANAGER_SBUS1_BAUD / 1000; // update baud param in case user looks at it
|
state[i].baud = AP_SERIALMANAGER_SBUS1_BAUD / 1000; // update baud param in case user looks at it
|
||||||
state[i].uart->begin(map_baudrate(state[i].baud),
|
uart->begin(map_baudrate(state[i].baud),
|
||||||
AP_SERIALMANAGER_SBUS1_BUFSIZE_RX,
|
AP_SERIALMANAGER_SBUS1_BUFSIZE_RX,
|
||||||
AP_SERIALMANAGER_SBUS1_BUFSIZE_TX);
|
AP_SERIALMANAGER_SBUS1_BUFSIZE_TX);
|
||||||
state[i].uart->configure_parity(2); // enable even parity
|
uart->configure_parity(2); // enable even parity
|
||||||
state[i].uart->set_stop_bits(2);
|
uart->set_stop_bits(2);
|
||||||
state[i].uart->set_unbuffered_writes(true);
|
uart->set_unbuffered_writes(true);
|
||||||
state[i].uart->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
uart->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SerialProtocol_ESCTelemetry:
|
case SerialProtocol_ESCTelemetry:
|
||||||
// ESC telemetry protocol from BLHeli32 ESCs. Note that baudrate is hardcoded to 115200
|
// ESC telemetry protocol from BLHeli32 ESCs. Note that baudrate is hardcoded to 115200
|
||||||
state[i].baud = 115200;
|
state[i].baud = 115200;
|
||||||
state[i].uart->begin(map_baudrate(state[i].baud), 30, 30);
|
uart->begin(map_baudrate(state[i].baud), 30, 30);
|
||||||
state[i].uart->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
uart->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SerialProtocol_Robotis:
|
case SerialProtocol_Robotis:
|
||||||
state[i].uart->begin(map_baudrate(state[i].baud),
|
uart->begin(map_baudrate(state[i].baud),
|
||||||
AP_SERIALMANAGER_ROBOTIS_BUFSIZE_RX,
|
AP_SERIALMANAGER_ROBOTIS_BUFSIZE_RX,
|
||||||
AP_SERIALMANAGER_ROBOTIS_BUFSIZE_TX);
|
AP_SERIALMANAGER_ROBOTIS_BUFSIZE_TX);
|
||||||
state[i].uart->set_unbuffered_writes(true);
|
uart->set_unbuffered_writes(true);
|
||||||
state[i].uart->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
uart->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SerialProtocol_SLCAN:
|
case SerialProtocol_SLCAN:
|
||||||
state[i].uart->begin(map_baudrate(state[i].baud),
|
uart->begin(map_baudrate(state[i].baud),
|
||||||
AP_SERIALMANAGER_SLCAN_BUFSIZE_RX,
|
AP_SERIALMANAGER_SLCAN_BUFSIZE_RX,
|
||||||
AP_SERIALMANAGER_SLCAN_BUFSIZE_TX);
|
AP_SERIALMANAGER_SLCAN_BUFSIZE_TX);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
#ifndef HAL_BUILD_AP_PERIPH
|
#ifndef HAL_BUILD_AP_PERIPH
|
||||||
case SerialProtocol_RCIN:
|
case SerialProtocol_RCIN:
|
||||||
AP::RC().add_uart(state[i].uart);
|
AP::RC().add_uart(uart);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case SerialProtocol_EFI_MS:
|
case SerialProtocol_EFI_MS:
|
||||||
state[i].baud = AP_SERIALMANAGER_EFI_MS_BAUD; // update baud param in case user looks at it
|
state[i].baud = AP_SERIALMANAGER_EFI_MS_BAUD; // update baud param in case user looks at it
|
||||||
state[i].uart->begin(map_baudrate(state[i].baud),
|
uart->begin(map_baudrate(state[i].baud),
|
||||||
AP_SERIALMANAGER_EFI_MS_BUFSIZE_RX,
|
AP_SERIALMANAGER_EFI_MS_BUFSIZE_RX,
|
||||||
AP_SERIALMANAGER_EFI_MS_BUFSIZE_TX);
|
AP_SERIALMANAGER_EFI_MS_BUFSIZE_TX);
|
||||||
state[i].uart->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
uart->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SerialProtocol_Generator:
|
case SerialProtocol_Generator:
|
||||||
@ -526,15 +499,15 @@ void AP_SerialManager::init()
|
|||||||
case SerialProtocol_DJI_FPV:
|
case SerialProtocol_DJI_FPV:
|
||||||
// baudrate defaults to 115200
|
// baudrate defaults to 115200
|
||||||
state[i].baud.set_default(AP_SERIALMANAGER_MSP_BAUD/1000);
|
state[i].baud.set_default(AP_SERIALMANAGER_MSP_BAUD/1000);
|
||||||
state[i].uart->begin(map_baudrate(state[i].baud),
|
uart->begin(map_baudrate(state[i].baud),
|
||||||
AP_SERIALMANAGER_MSP_BUFSIZE_RX,
|
AP_SERIALMANAGER_MSP_BUFSIZE_RX,
|
||||||
AP_SERIALMANAGER_MSP_BUFSIZE_TX);
|
AP_SERIALMANAGER_MSP_BUFSIZE_TX);
|
||||||
state[i].uart->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
uart->set_flow_control(AP_HAL::UARTDriver::FLOW_CONTROL_DISABLE);
|
||||||
// Note init is handled by AP_MSP
|
// Note init is handled by AP_MSP
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
state[i].uart->begin(map_baudrate(state[i].baud));
|
uart->begin(map_baudrate(state[i].baud));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -568,7 +541,8 @@ AP_HAL::UARTDriver *AP_SerialManager::find_serial(enum SerialProtocol protocol,
|
|||||||
if (_state == nullptr) {
|
if (_state == nullptr) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
return _state->uart;
|
const uint8_t serial_idx = _state - &state[0];
|
||||||
|
return hal.serial(serial_idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_baudrate - searches available serial ports for the first instance that allows the given protocol
|
// find_baudrate - searches available serial ports for the first instance that allows the given protocol
|
||||||
@ -631,7 +605,7 @@ AP_SerialManager::SerialProtocol AP_SerialManager::get_mavlink_protocol(mavlink_
|
|||||||
AP_HAL::UARTDriver *AP_SerialManager::get_serial_by_id(uint8_t id)
|
AP_HAL::UARTDriver *AP_SerialManager::get_serial_by_id(uint8_t id)
|
||||||
{
|
{
|
||||||
if (id < SERIALMANAGER_NUM_PORTS) {
|
if (id < SERIALMANAGER_NUM_PORTS) {
|
||||||
return state[id].uart;
|
return hal.serial(id);
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@ -641,8 +615,9 @@ void AP_SerialManager::set_blocking_writes_all(bool blocking)
|
|||||||
{
|
{
|
||||||
// set block_writes for all initialised serial ports
|
// set block_writes for all initialised serial ports
|
||||||
for (uint8_t i=0; i<SERIALMANAGER_NUM_PORTS; i++) {
|
for (uint8_t i=0; i<SERIALMANAGER_NUM_PORTS; i++) {
|
||||||
if (state[i].uart != nullptr) {
|
auto *uart = hal.serial(i);
|
||||||
state[i].uart->set_blocking_writes(blocking);
|
if (uart != nullptr) {
|
||||||
|
uart->set_blocking_writes(blocking);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -714,7 +689,7 @@ void AP_SerialManager::set_options(uint16_t i)
|
|||||||
{
|
{
|
||||||
struct UARTState &opt = state[i];
|
struct UARTState &opt = state[i];
|
||||||
// pass through to HAL
|
// pass through to HAL
|
||||||
if (!opt.uart->set_options(opt.options)) {
|
if (!hal.serial(i)->set_options(opt.options)) {
|
||||||
hal.console->printf("Unable to setup options for Serial%u\n", i);
|
hal.console->printf("Unable to setup options for Serial%u\n", i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -729,8 +704,8 @@ bool AP_SerialManager::get_passthru(AP_HAL::UARTDriver *&port1, AP_HAL::UARTDriv
|
|||||||
passthru_port1 >= SERIALMANAGER_NUM_PORTS) {
|
passthru_port1 >= SERIALMANAGER_NUM_PORTS) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
port1 = state[passthru_port1].uart;
|
port1 = hal.serial(passthru_port1);
|
||||||
port2 = state[passthru_port2].uart;
|
port2 = hal.serial(passthru_port2);
|
||||||
baud1 = map_baudrate(state[passthru_port1].baud);
|
baud1 = map_baudrate(state[passthru_port1].baud);
|
||||||
baud2 = map_baudrate(state[passthru_port2].baud);
|
baud2 = map_baudrate(state[passthru_port2].baud);
|
||||||
timeout_s = MAX(passthru_timeout, 0);
|
timeout_s = MAX(passthru_timeout, 0);
|
||||||
|
@ -213,7 +213,6 @@ private:
|
|||||||
struct UARTState {
|
struct UARTState {
|
||||||
AP_Int8 protocol;
|
AP_Int8 protocol;
|
||||||
AP_Int32 baud;
|
AP_Int32 baud;
|
||||||
AP_HAL::UARTDriver* uart;
|
|
||||||
AP_Int16 options;
|
AP_Int16 options;
|
||||||
} state[SERIALMANAGER_NUM_PORTS];
|
} state[SERIALMANAGER_NUM_PORTS];
|
||||||
|
|
||||||
@ -232,6 +231,8 @@ private:
|
|||||||
|
|
||||||
// setup any special options
|
// setup any special options
|
||||||
void set_options(uint16_t i);
|
void set_options(uint16_t i);
|
||||||
|
|
||||||
|
bool init_console_done;
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace AP {
|
namespace AP {
|
||||||
|
Loading…
Reference in New Issue
Block a user