diff --git a/src/serial_util.c b/src/serial_util.c index 090b648..a694a4c 100644 --- a/src/serial_util.c +++ b/src/serial_util.c @@ -23,6 +23,8 @@ static speed_t speed_from_string(char const *s) { return DEFAULT_SPEED; } switch (speed) { + case 0: + return B0; case 9600: return B9600; case 115200: @@ -55,9 +57,12 @@ int serial_init(char const *serial_port, char const *speed) { fprintf(stderr, "Failed to get termios attrs.\n"); } - if (cfsetspeed(&t_options, speed_from_string(speed)) < 0) { - fprintf(stderr, "Failed to set port speed.\n"); - return 2; + speed_t s = speed_from_string(speed); + if (s != B0) { + if (cfsetspeed(&t_options, speed_from_string(speed)) < 0) { + fprintf(stderr, "Failed to set port speed.\n"); + return 2; + } } t_options.c_lflag &= ~(ICANON | ECHO | ECHOE);