summaryrefslogtreecommitdiff
path: root/cpukit/libcsupport/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpukit/libcsupport/src')
-rw-r--r--cpukit/libcsupport/src/termios_baud2num.c18
-rw-r--r--cpukit/libcsupport/src/termios_baudtable.c6
-rw-r--r--cpukit/libcsupport/src/termios_num2baud.c24
-rw-r--r--cpukit/libcsupport/src/termios_setinitialbaud.c24
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;
}