Added baudrate validation functions to the Serial implementations

This commit is contained in:
Eric Katzfey
2023-07-20 13:11:35 -07:00
parent 1b92db9d89
commit 4672106699
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;