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
@@ -70,11 +70,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: %lu", _baudrate);
return false;
}
switch (_baudrate) {
case 9600: speed = B9600; break;
@@ -329,6 +350,11 @@ uint32_t SerialImpl::getBaudrate() const
bool SerialImpl::setBaudrate(uint32_t baudrate)
{
if (! validateBaudrate(baudrate)) {
PX4_ERR("ERR: invalid baudrate: %lu", baudrate);
return false;
}
// check if already configured
if ((baudrate == _baudrate) && _open) {
return true;
@@ -100,6 +100,7 @@ private:
StopBits _stopbits{StopBits::One};
FlowControl _flowcontrol{FlowControl::Disabled};
bool validateBaudrate(uint32_t baudrate);
bool configure();
};