AP_SerialManager: remove set_console_baud, factor out find_protocol_instance
This commit is contained in:
parent
7a3eb69818
commit
37145253d9
@ -276,10 +276,8 @@ void AP_SerialManager::init()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// find_serial - searches available serial ports for the first instance that allows the given protocol
|
|
||||||
// instance should be zero if searching for the first instance, 1 for the second, etc
|
const AP_SerialManager::UARTState *AP_SerialManager::find_protocol_instance(enum SerialProtocol protocol, uint8_t instance) const
|
||||||
// returns uart on success, nullptr if a serial port cannot be found
|
|
||||||
AP_HAL::UARTDriver *AP_SerialManager::find_serial(enum SerialProtocol protocol, uint8_t instance) const
|
|
||||||
{
|
{
|
||||||
uint8_t found_instance = 0;
|
uint8_t found_instance = 0;
|
||||||
|
|
||||||
@ -287,7 +285,7 @@ AP_HAL::UARTDriver *AP_SerialManager::find_serial(enum SerialProtocol protocol,
|
|||||||
for(uint8_t i=0; i<SERIALMANAGER_NUM_PORTS; i++) {
|
for(uint8_t i=0; i<SERIALMANAGER_NUM_PORTS; i++) {
|
||||||
if (protocol_match(protocol, (enum SerialProtocol)state[i].protocol.get())) {
|
if (protocol_match(protocol, (enum SerialProtocol)state[i].protocol.get())) {
|
||||||
if (found_instance == instance) {
|
if (found_instance == instance) {
|
||||||
return state[i].uart;
|
return &state[i];
|
||||||
}
|
}
|
||||||
found_instance++;
|
found_instance++;
|
||||||
}
|
}
|
||||||
@ -297,25 +295,28 @@ AP_HAL::UARTDriver *AP_SerialManager::find_serial(enum SerialProtocol protocol,
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// find_serial - searches available serial ports for the first instance that allows the given protocol
|
||||||
|
// instance should be zero if searching for the first instance, 1 for the second, etc
|
||||||
|
// returns uart on success, nullptr if a serial port cannot be found
|
||||||
|
AP_HAL::UARTDriver *AP_SerialManager::find_serial(enum SerialProtocol protocol, uint8_t instance) const
|
||||||
|
{
|
||||||
|
const struct UARTState *_state = find_protocol_instance(protocol, instance);
|
||||||
|
if (_state == nullptr) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
return _state->uart;
|
||||||
|
}
|
||||||
|
|
||||||
// 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
|
||||||
// instance should be zero if searching for the first instance, 1 for the second, etc
|
// instance should be zero if searching for the first instance, 1 for the second, etc
|
||||||
// returns baudrate on success, 0 if a serial port cannot be found
|
// returns baudrate on success, 0 if a serial port cannot be found
|
||||||
uint32_t AP_SerialManager::find_baudrate(enum SerialProtocol protocol, uint8_t instance) const
|
uint32_t AP_SerialManager::find_baudrate(enum SerialProtocol protocol, uint8_t instance) const
|
||||||
{
|
{
|
||||||
uint8_t found_instance = 0;
|
const struct UARTState *_state = find_protocol_instance(protocol, instance);
|
||||||
|
if (_state == nullptr) {
|
||||||
// search for matching protocol
|
|
||||||
for(uint8_t i=0; i<SERIALMANAGER_NUM_PORTS; i++) {
|
|
||||||
if (protocol_match(protocol, (enum SerialProtocol)state[i].protocol.get())) {
|
|
||||||
if (found_instance == instance) {
|
|
||||||
return map_baudrate(state[i].baud);
|
|
||||||
}
|
|
||||||
found_instance++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// if we got this far we did not find the uart
|
|
||||||
return 0;
|
return 0;
|
||||||
|
}
|
||||||
|
return _state->baud;
|
||||||
}
|
}
|
||||||
|
|
||||||
// get_mavlink_channel - provides the mavlink channel associated with a given protocol
|
// get_mavlink_channel - provides the mavlink channel associated with a given protocol
|
||||||
@ -364,24 +365,6 @@ void AP_SerialManager::set_blocking_writes_all(bool blocking)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// set_console_baud - sets the console's baud rate to the rate specified by the protocol
|
|
||||||
void AP_SerialManager::set_console_baud(enum SerialProtocol protocol, uint8_t instance) const
|
|
||||||
{
|
|
||||||
uint8_t found_instance = 0;
|
|
||||||
|
|
||||||
// find baud rate of this protocol
|
|
||||||
for (uint8_t i=0; i<SERIALMANAGER_NUM_PORTS; i++) {
|
|
||||||
if (protocol_match(protocol, (enum SerialProtocol)state[i].protocol.get())) {
|
|
||||||
if (instance == found_instance) {
|
|
||||||
// set console's baud rate
|
|
||||||
state[0].uart->begin(map_baudrate(state[i].baud));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
found_instance++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* map from a 16 bit EEPROM baud rate to a real baud rate.
|
* map from a 16 bit EEPROM baud rate to a real baud rate.
|
||||||
* For PX4 we can do 1.5MBit, although 921600 is more reliable.
|
* For PX4 we can do 1.5MBit, although 921600 is more reliable.
|
||||||
|
@ -136,9 +136,6 @@ public:
|
|||||||
// set_blocking_writes_all - sets block_writes on or off for all serial channels
|
// set_blocking_writes_all - sets block_writes on or off for all serial channels
|
||||||
void set_blocking_writes_all(bool blocking);
|
void set_blocking_writes_all(bool blocking);
|
||||||
|
|
||||||
// set_console_baud - sets the console's baud rate to the rate specified by the protocol
|
|
||||||
void set_console_baud(enum SerialProtocol protocol, uint8_t instance) const;
|
|
||||||
|
|
||||||
// parameter var table
|
// parameter var table
|
||||||
static const struct AP_Param::GroupInfo var_info[];
|
static const struct AP_Param::GroupInfo var_info[];
|
||||||
|
|
||||||
@ -146,12 +143,17 @@ private:
|
|||||||
static AP_SerialManager *_instance;
|
static AP_SerialManager *_instance;
|
||||||
|
|
||||||
// array of uart info
|
// array of uart info
|
||||||
struct {
|
struct UARTState {
|
||||||
AP_Int8 protocol;
|
AP_Int8 protocol;
|
||||||
AP_Int32 baud;
|
AP_Int32 baud;
|
||||||
AP_HAL::UARTDriver* uart;
|
AP_HAL::UARTDriver* uart;
|
||||||
} state[SERIALMANAGER_NUM_PORTS];
|
} state[SERIALMANAGER_NUM_PORTS];
|
||||||
|
|
||||||
|
// search through managed serial connections looking for the
|
||||||
|
// instance-nth UART which is running protocol protocol
|
||||||
|
const UARTState *find_protocol_instance(enum SerialProtocol protocol,
|
||||||
|
uint8_t instance) const;
|
||||||
|
|
||||||
uint32_t map_baudrate(int32_t rate) const;
|
uint32_t map_baudrate(int32_t rate) const;
|
||||||
|
|
||||||
// protocol_match - returns true if the protocols match
|
// protocol_match - returns true if the protocols match
|
||||||
|
Loading…
Reference in New Issue
Block a user