Added baudrate validation functions to the Serial implementations

This commit is contained in:
Eric Katzfey
2023-12-27 09:09:30 -08:00
parent ad0ce0b7ed
commit 5938831e50
6 changed files with 86 additions and 0 deletions
@@ -36,11 +36,32 @@ SerialImpl::~SerialImpl()
}
}
bool SerialImpl::validateBaudrate(uint32_t baudrate)
{
if ((baudrate == 9600) ||
(baudrate == 19200) ||
(baudrate == 38400) ||
(baudrate == 57600) ||
(baudrate == 115200) ||
(baudrate == 230400) ||
(baudrate == 460800) ||
(baudrate == 921600)) {
return true;
}
return false;
}
bool SerialImpl::configure()
{
/* process baud rate */
int speed;
if (! validateBaudrate(_baudrate)) {
PX4_ERR("ERR: unknown baudrate: %u", _baudrate);
return false;
}
switch (_baudrate) {
case 9600: speed = B9600; break;
@@ -295,6 +316,11 @@ uint32_t SerialImpl::getBaudrate() const
bool SerialImpl::setBaudrate(uint32_t baudrate)
{
if (! validateBaudrate(baudrate)) {
PX4_ERR("ERR: invalid baudrate: %u", baudrate);
return false;
}
// check if already configured
if ((baudrate == _baudrate) && _open) {
return true;