From 67e35de97e2a7b940ee52274577df448cffe4e33 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Wed, 27 Apr 2016 21:06:54 +0300 Subject: [PATCH] Make use of new tty_get_speed helper --- monitor/control.c | 55 +--------------------------------------- monitor/main.c | 9 +++++-- tools/bccmd.c | 32 +++--------------------- tools/btattach.c | 53 ++------------------------------------- tools/hciattach.c | 64 ++++------------------------------------------- 5 files changed, 19 insertions(+), 194 deletions(-) diff --git a/monitor/control.c b/monitor/control.c index 05faeef49..048add25e 100644 --- a/monitor/control.c +++ b/monitor/control.c @@ -1218,59 +1218,6 @@ static void tty_callback(int fd, uint32_t events, void *user_data) } } -static unsigned int get_speed(unsigned int speed) -{ - switch (speed) { - case 57600: - return B57600; - case 115200: - return B115200; - case 230400: - return B230400; - case 460800: - return B460800; - case 500000: - return B500000; - case 576000: - return B576000; - case 921600: - return B921600; - case 1000000: - return B1000000; - case 1152000: - return B1152000; - case 1500000: - return B1500000; - case 2000000: - return B2000000; -#ifdef B2500000 - case 2500000: - return B2500000; -#endif -#ifdef B3000000 - case 3000000: - return B3000000; -#endif -#ifdef B3500000 - case 3500000: - return B3500000; -#endif -#ifdef B3710000 - case 3710000: - return B3710000; -#endif -#ifdef B4000000 - case 4000000: - return B4000000; -#endif - default: - fprintf(stderr, "Unsupported speed. Using 115200.\n"); - return B115200; - } - - return 0; -} - int control_tty(const char *path, unsigned int speed) { struct control_data *data; @@ -1298,7 +1245,7 @@ int control_tty(const char *path, unsigned int speed) ti.c_cflag |= (CLOCAL | CREAD); ti.c_cflag &= ~CRTSCTS; - cfsetspeed(&ti, get_speed(speed)); + cfsetspeed(&ti, speed); if (tcsetattr(fd, TCSANOW, &ti) < 0) { err = -errno; diff --git a/monitor/main.c b/monitor/main.c index be3d55e0f..c9041663e 100644 --- a/monitor/main.c +++ b/monitor/main.c @@ -33,6 +33,7 @@ #include #include "src/shared/mainloop.h" +#include "src/shared/tty.h" #include "packet.h" #include "lmp.h" @@ -99,7 +100,7 @@ int main(int argc, char *argv[]) const char *analyze_path = NULL; const char *ellisys_server = NULL; const char *tty = NULL; - unsigned int tty_speed = 115200; + unsigned int tty_speed = B115200; unsigned short ellisys_port = 0; const char *str; int exit_status; @@ -122,7 +123,11 @@ int main(int argc, char *argv[]) tty= optarg; break; case 'B': - tty_speed = atoi(optarg); + tty_speed = tty_get_speed(atoi(optarg)); + if (!tty_speed) { + fprintf(stderr, "Unknown speed: %s\n", optarg); + return EXIT_FAILURE; + } break; case 'r': reader_path = optarg; diff --git a/tools/bccmd.c b/tools/bccmd.c index 4d15f3f4c..84f1a4a5b 100644 --- a/tools/bccmd.c +++ b/tools/bccmd.c @@ -36,6 +36,8 @@ #include "lib/hci.h" #include "lib/hci_lib.h" +#include "src/shared/tty.h" + #include "csr.h" #define CSR_TRANSPORT_UNKNOWN 0 @@ -1193,34 +1195,8 @@ int main(int argc, char *argv[]) device = strdup(optarg); break; case 'b': - switch (atoi(optarg)) { - case 9600: bcsp_rate = B9600; break; - case 19200: bcsp_rate = B19200; break; - case 38400: bcsp_rate = B38400; break; - case 57600: bcsp_rate = B57600; break; - case 115200: bcsp_rate = B115200; break; - case 230400: bcsp_rate = B230400; break; - case 460800: bcsp_rate = B460800; break; - case 500000: bcsp_rate = B500000; break; - case 576000: bcsp_rate = B576000; break; - case 921600: bcsp_rate = B921600; break; - case 1000000: bcsp_rate = B1000000; break; - case 1152000: bcsp_rate = B1152000; break; - case 1500000: bcsp_rate = B1500000; break; - case 2000000: bcsp_rate = B2000000; break; -#ifdef B2500000 - case 2500000: bcsp_rate = B2500000; break; -#endif -#ifdef B3000000 - case 3000000: bcsp_rate = B3000000; break; -#endif -#ifdef B3500000 - case 3500000: bcsp_rate = B3500000; break; -#endif -#ifdef B4000000 - case 4000000: bcsp_rate = B4000000; break; -#endif - default: + bcsp_rate = tty_get_speed(atoi(optarg)); + if (!bcsp_rate) { printf("Unknown BCSP baud rate specified, defaulting to 38400bps\n"); bcsp_rate = B38400; } diff --git a/tools/btattach.c b/tools/btattach.c index 45962e87c..ec63ec948 100644 --- a/tools/btattach.c +++ b/tools/btattach.c @@ -46,6 +46,7 @@ #include "src/shared/mainloop.h" #include "src/shared/timeout.h" #include "src/shared/util.h" +#include "src/shared/tty.h" #include "src/shared/hci.h" static int open_serial(const char *path, unsigned int speed) @@ -219,56 +220,6 @@ static const struct { { } }; -static unsigned int get_speed(const char *str) -{ - switch (atoi(str)) { - case 57600: - return B57600; - case 115200: - return B115200; - case 230400: - return B230400; - case 460800: - return B460800; - case 500000: - return B500000; - case 576000: - return B576000; - case 921600: - return B921600; - case 1000000: - return B1000000; - case 1152000: - return B1152000; - case 1500000: - return B1500000; - case 2000000: - return B2000000; -#ifdef B2500000 - case 2500000: - return B2500000; -#endif -#ifdef B3000000 - case 3000000: - return B3000000; -#endif -#ifdef B3500000 - case 3500000: - return B3500000; -#endif -#ifdef B3710000 - case 3710000: - return B3710000; -#endif -#ifdef B4000000 - case 4000000: - return B4000000; -#endif - } - - return 0; -} - int main(int argc, char *argv[]) { const char *bredr_path = NULL, *amp_path = NULL, *proto = NULL; @@ -296,7 +247,7 @@ int main(int argc, char *argv[]) proto = optarg; break; case 'S': - speed = get_speed(optarg); + speed = tty_get_speed(atoi(optarg)); if (!speed) { fprintf(stderr, "Invalid speed: %s\n", optarg); return EXIT_FAILURE; diff --git a/tools/hciattach.c b/tools/hciattach.c index 59a76a7a1..fad176c9b 100644 --- a/tools/hciattach.c +++ b/tools/hciattach.c @@ -46,6 +46,8 @@ #include "lib/hci.h" #include "lib/hci_lib.h" +#include "src/shared/tty.h" + #include "hciattach.h" struct uart_t { @@ -84,68 +86,12 @@ static void sig_alarm(int sig) exit(1); } -int uart_speed(int s) -{ - switch (s) { - case 9600: - return B9600; - case 19200: - return B19200; - case 38400: - return B38400; - case 57600: - return B57600; - case 115200: - return B115200; - case 230400: - return B230400; - case 460800: - return B460800; - case 500000: - return B500000; - case 576000: - return B576000; - case 921600: - return B921600; - case 1000000: - return B1000000; - case 1152000: - return B1152000; - case 1500000: - return B1500000; - case 2000000: - return B2000000; -#ifdef B2500000 - case 2500000: - return B2500000; -#endif -#ifdef B3000000 - case 3000000: - return B3000000; -#endif -#ifdef B3500000 - case 3500000: - return B3500000; -#endif -#ifdef B3710000 - case 3710000: - return B3710000; -#endif -#ifdef B4000000 - case 4000000: - return B4000000; -#endif - default: - return B57600; - } -} - int set_speed(int fd, struct termios *ti, int speed) { - if (cfsetospeed(ti, uart_speed(speed)) < 0) + if (cfsetospeed(ti, tty_get_speed(speed)) < 0) return -errno; - if (cfsetispeed(ti, uart_speed(speed)) < 0) + if (cfsetispeed(ti, tty_get_speed(speed)) < 0) return -errno; if (tcsetattr(fd, TCSANOW, ti) < 0) @@ -646,7 +592,7 @@ static int csr(int fd, struct uart_t *u, struct termios *ti) fprintf(stderr, "Speed %d too high. Remaining at %d baud\n", u->speed, u->init_speed); u->speed = u->init_speed; - } else if (u->speed != 57600 && uart_speed(u->speed) == B57600) { + } else if (!tty_get_speed(u->speed)) { /* Unknown speed. Why oh why can't we just pass an int to the kernel? */ fprintf(stderr, "Speed %d unrecognised. Remaining at %d baud\n", u->speed, u->init_speed); -- 2.47.3