From 04c5593ceff7dcd68879c3acb1c8990372c4020c Mon Sep 17 00:00:00 2001 From: Tapani Utriainen Date: Thu, 18 May 2017 13:52:54 +0800 Subject: [PATCH] uart.c: add function to return baudrate as an integer from a speed_t Signed-off-by: Tapani Utriainen Signed-off-by: Brendan Le Foll --- src/uart/uart.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/src/uart/uart.c b/src/uart/uart.c index 9600caa..39bf25f 100644 --- a/src/uart/uart.c +++ b/src/uart/uart.c @@ -114,6 +114,55 @@ uint2speed(unsigned int speed) } } +static unsigned int speed_to_uint(speed_t speedt) { + struct baud_table { + speed_t speedt; + unsigned int baudrate; + }; + static const struct baud_table bauds[] = { + { B50, 50 }, + { B75, 75 }, + { B110, 110 }, + { B150, 150 }, + { B200, 200 }, + { B300, 300 }, + { B600, 600 }, + { B1200, 1200 }, + { B1800, 1800 }, + { B2400, 2400 }, + { B9600, 9600 }, + { B19200, 19200 }, + { B38400, 38400 }, + { B57600, 57600 }, + { B115200, 115200 }, + { B230400, 230400 }, + { B460800, 460800 }, + { B500000, 500000 }, + { B576000, 576000 }, + { B921600, 921600 }, + { B1000000, 1000000 }, + { B1152000, 1152000 }, + { B1500000, 1500000 }, + { B2000000, 2000000 }, + { B2500000, 2500000 }, + { B3000000, 3000000 }, +#if !defined(MSYS) + { B3500000, 3500000 }, + { B4000000, 4000000 }, +#endif + { B0, 0} /* Must be last in this table */ + }; + int i = 0; + + while (bauds[i].baudrate > 0) { + if (speedt == bauds[i].speedt) { + return bauds[i].baudrate; + } + i++; + } + return 0; +} + static mraa_uart_context mraa_uart_init_internal(mraa_adv_func_t* func_table) {