summaryrefslogtreecommitdiffstats
path: root/cpukit
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-05-22 20:35:41 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-05-22 20:35:41 +0000
commitcdc830964ac1e18dc0116023232c4992d0b3f346 (patch)
treed1564ba40e22ca6fd81cc959664f9b33652b1f69 /cpukit
parent2008-05-22 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-cdc830964ac1e18dc0116023232c4992d0b3f346.tar.bz2
2008-05-22 Joel Sherrill <joel.sherrill@oarcorp.com>
* libcsupport/src/termios_baud2index.c, libcsupport/src/termios_baud2num.c, libcsupport/src/termios_num2baud.c, libcsupport/src/termios_setinitialbaud.c: New files.
Diffstat (limited to 'cpukit')
-rw-r--r--cpukit/ChangeLog7
-rw-r--r--cpukit/libcsupport/src/termios_baud2index.c45
-rw-r--r--cpukit/libcsupport/src/termios_baud2num.c45
-rw-r--r--cpukit/libcsupport/src/termios_num2baud.c45
-rw-r--r--cpukit/libcsupport/src/termios_setinitialbaud.c29
5 files changed, 171 insertions, 0 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog
index b50d82373c..3ece903160 100644
--- a/cpukit/ChangeLog
+++ b/cpukit/ChangeLog
@@ -1,5 +1,12 @@
2008-05-22 Joel Sherrill <joel.sherrill@oarcorp.com>
+ * libcsupport/src/termios_baud2index.c,
+ libcsupport/src/termios_baud2num.c,
+ libcsupport/src/termios_num2baud.c,
+ libcsupport/src/termios_setinitialbaud.c: New files.
+
+2008-05-22 Joel Sherrill <joel.sherrill@oarcorp.com>
+
* libcsupport/Makefile.am, libcsupport/preinstall.am,
libcsupport/include/rtems/termiostypes.h: Move termios helper
routines from libchip to libcsupport. Add routine which makes it easy
diff --git a/cpukit/libcsupport/src/termios_baud2index.c b/cpukit/libcsupport/src/termios_baud2index.c
new file mode 100644
index 0000000000..00703d2093
--- /dev/null
+++ b/cpukit/libcsupport/src/termios_baud2index.c
@@ -0,0 +1,45 @@
+/*
+ * COPYRIGHT (c) 1989-2008.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#include <sys/termios.h>
+
+int termios_baud_to_index(
+ int termios_baud
+)
+{
+ int baud_index;
+
+ switch (termios_baud) {
+ case B0: baud_index = 0; break;
+ case B50: baud_index = 1; break;
+ case B75: baud_index = 2; break;
+ case B110: baud_index = 3; break;
+ case B134: baud_index = 4; break;
+ case B150: baud_index = 5; break;
+ case B200: baud_index = 6; break;
+ case B300: baud_index = 7; break;
+ case B600: baud_index = 8; break;
+ case B1200: baud_index = 9; break;
+ case B1800: baud_index = 10; break;
+ case B2400: baud_index = 11; break;
+ case B4800: baud_index = 12; break;
+ case B9600: baud_index = 13; break;
+ case B19200: baud_index = 14; break;
+ case B38400: baud_index = 15; break;
+ case B57600: baud_index = 16; break;
+ case B115200: baud_index = 17; break;
+ case B230400: baud_index = 18; break;
+ case B460800: baud_index = 19; break;
+ default: baud_index = -1; break;
+ }
+
+ return baud_index;
+}
diff --git a/cpukit/libcsupport/src/termios_baud2num.c b/cpukit/libcsupport/src/termios_baud2num.c
new file mode 100644
index 0000000000..c9d4dd8988
--- /dev/null
+++ b/cpukit/libcsupport/src/termios_baud2num.c
@@ -0,0 +1,45 @@
+/*
+ * COPYRIGHT (c) 1989-2008.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#include <sys/termios.h>
+
+int termios_baud_to_number(
+ int termios_baud
+)
+{
+ int baud;
+
+ switch (termios_baud) {
+ case B0: baud = 0; break;
+ case B50: baud = 50; break;
+ case B75: baud = 75; break;
+ case B110: baud = 110; break;
+ case B134: baud = 135; break;
+ case B150: baud = 150; break;
+ case B200: baud = 200; break;
+ case B300: baud = 300; break;
+ case B600: baud = 600; break;
+ case B1200: baud = 1200; break;
+ case B1800: baud = 1800; break;
+ case B2400: baud = 2400; break;
+ case B4800: baud = 4800; break;
+ case B9600: baud = 9600; break;
+ case B19200: baud = 19200; break;
+ case B38400: baud = 38400; break;
+ case B57600: baud = 57600; break;
+ case B115200: baud = 115200; break;
+ case B230400: baud = 230400; break;
+ case B460800: baud = 460800; break;
+ default: baud = -1; break;
+ }
+
+ return baud;
+}
diff --git a/cpukit/libcsupport/src/termios_num2baud.c b/cpukit/libcsupport/src/termios_num2baud.c
new file mode 100644
index 0000000000..debc7e4b7e
--- /dev/null
+++ b/cpukit/libcsupport/src/termios_num2baud.c
@@ -0,0 +1,45 @@
+/*
+ * COPYRIGHT (c) 1989-2008.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#include <sys/termios.h>
+
+int termios_number_to_baud(
+ int baud
+)
+{
+ int termios_baud;
+
+ switch (baud) {
+ case 0: termios_baud = B0; break;
+ case 50: termios_baud = B50; break;
+ case 75: termios_baud = B75; break;
+ case 110: termios_baud = B110; break;
+ case 134: termios_baud = B134; break;
+ case 150: termios_baud = B150; break;
+ case 200: termios_baud = B200; break;
+ case 300: termios_baud = B300; break;
+ case 600: termios_baud = B600; break;
+ case 1200: termios_baud = B1200; break;
+ case 1800: termios_baud = B1800; break;
+ case 2400: termios_baud = B2400; break;
+ case 4800: termios_baud = B4800; break;
+ case 9600: termios_baud = B9600; break;
+ case 19200: termios_baud = B19200; break;
+ case 38400: termios_baud = B38400; break;
+ case 57600: termios_baud = B57600; break;
+ case 115200: termios_baud = B115200; break;
+ case 230400: termios_baud = B230400; break;
+ case 460800: termios_baud = B460800; break;
+ default: termios_baud = -1; break;
+ }
+
+ return termios_baud;
+}
diff --git a/cpukit/libcsupport/src/termios_setinitialbaud.c b/cpukit/libcsupport/src/termios_setinitialbaud.c
new file mode 100644
index 0000000000..33bc458edc
--- /dev/null
+++ b/cpukit/libcsupport/src/termios_setinitialbaud.c
@@ -0,0 +1,29 @@
+/*
+ * COPYRIGHT (c) 1989-2008.
+ * On-Line Applications Research Corporation (OAR).
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#include <sys/termios.h>
+#include <rtems/termiostypes.h>
+
+int rtems_termios_set_initial_baud(
+ struct rtems_termios_tty *ttyp,
+ int baud
+)
+{
+ int cflags_baud;
+
+ cflags_baud = termios_number_to_baud(baud);
+ if ( cflags_baud == -1 )
+ return -1;
+
+ ttyp->termios.c_cflag = (ttyp->termios.c_cflag & ~CBAUD) | cflags_baud;
+
+ return 0;
+}