diff options
Diffstat (limited to 'cpukit/libcsupport/src')
-rw-r--r-- | cpukit/libcsupport/src/termios_baud2num.c | 18 | ||||
-rw-r--r-- | cpukit/libcsupport/src/termios_baudtable.c | 6 | ||||
-rw-r--r-- | cpukit/libcsupport/src/termios_num2baud.c | 24 | ||||
-rw-r--r-- | cpukit/libcsupport/src/termios_setinitialbaud.c | 24 |
4 files changed, 30 insertions, 42 deletions
diff --git a/cpukit/libcsupport/src/termios_baud2num.c b/cpukit/libcsupport/src/termios_baud2num.c index 57b908ebee..e9c279aa3d 100644 --- a/cpukit/libcsupport/src/termios_baud2num.c +++ b/cpukit/libcsupport/src/termios_baud2num.c @@ -10,24 +10,14 @@ */ #ifdef HAVE_CONFIG_H -#include "config.h" + #include "config.h" #endif -#include <sys/termios.h> #include <rtems/termiostypes.h> -#include <rtems/assoc.h> -extern rtems_assoc_t termios_assoc_table[]; - -int32_t rtems_termios_baud_to_number( - int termios_baud -) +rtems_termios_baud_t rtems_termios_baud_to_number(tcflag_t c_cflag) { - int baud; - - baud = rtems_assoc_local_by_remote( termios_assoc_table, termios_baud ); - if ( baud == 0 && termios_baud != 0 ) - return -1; + uint32_t remote_value = (uint32_t) (c_cflag & CBAUD); - return baud; + return rtems_assoc_local_by_remote(rtems_termios_baud_table, remote_value); } diff --git a/cpukit/libcsupport/src/termios_baudtable.c b/cpukit/libcsupport/src/termios_baudtable.c index 92d1c6b809..0f7c4995fd 100644 --- a/cpukit/libcsupport/src/termios_baudtable.c +++ b/cpukit/libcsupport/src/termios_baudtable.c @@ -10,14 +10,12 @@ */ #ifdef HAVE_CONFIG_H -#include "config.h" + #include "config.h" #endif -#include <sys/termios.h> #include <rtems/termiostypes.h> -#include <rtems/assoc.h> -rtems_assoc_t termios_assoc_table[] = { +const rtems_assoc_t rtems_termios_baud_table [] = { { "B0", 0, B0 }, { "B50", 50, B50 }, { "B75", 75, B75 }, diff --git a/cpukit/libcsupport/src/termios_num2baud.c b/cpukit/libcsupport/src/termios_num2baud.c index 3725609135..3d6f0038f0 100644 --- a/cpukit/libcsupport/src/termios_num2baud.c +++ b/cpukit/libcsupport/src/termios_num2baud.c @@ -10,23 +10,21 @@ */ #ifdef HAVE_CONFIG_H -#include "config.h" + #include "config.h" #endif -#include <sys/termios.h> #include <rtems/termiostypes.h> -#include <rtems/assoc.h> -extern rtems_assoc_t termios_assoc_table[]; - -int rtems_termios_number_to_baud( - int32_t baud -) +tcflag_t rtems_termios_number_to_baud(rtems_termios_baud_t baud) { - int termios_baud; + uint32_t remote_value = rtems_assoc_remote_by_local( + rtems_termios_baud_table, + baud + ); + + if (remote_value == 0) { + remote_value = B0; + } - termios_baud = rtems_assoc_remote_by_local( termios_assoc_table, baud ); - if ( termios_baud == 0 && baud != 0 ) - return -1; - return termios_baud; + return (tcflag_t) remote_value; } diff --git a/cpukit/libcsupport/src/termios_setinitialbaud.c b/cpukit/libcsupport/src/termios_setinitialbaud.c index 282f5533de..4d7ec558fe 100644 --- a/cpukit/libcsupport/src/termios_setinitialbaud.c +++ b/cpukit/libcsupport/src/termios_setinitialbaud.c @@ -10,24 +10,26 @@ */ #ifdef HAVE_CONFIG_H -#include "config.h" + #include "config.h" #endif -#include <sys/termios.h> #include <rtems/termiostypes.h> -int rtems_termios_set_initial_baud( - struct rtems_termios_tty *ttyp, - int32_t baud +int rtems_termios_set_initial_baud( + struct rtems_termios_tty *tty, + rtems_termios_baud_t baud ) { - int cflags_baud; + int rv = 0; + tcflag_t c_cflag_baud = rtems_termios_number_to_baud(baud); - cflags_baud = rtems_termios_number_to_baud(baud); - if ( cflags_baud == -1 ) - return -1; + if ( c_cflag_baud == 0 ) { + tcflag_t cbaud = CBAUD; - ttyp->termios.c_cflag = (ttyp->termios.c_cflag & ~CBAUD) | cflags_baud; + tty->termios.c_cflag = (tty->termios.c_cflag & ~cbaud) | c_cflag_baud; + } else { + rv = -1; + } - return 0; + return rv; } |