Changeset 1c6926c1 in rtems
- Timestamp:
- 03/21/17 19:39:48 (5 years ago)
- Branches:
- 5, master
- Children:
- 94a4865
- Parents:
- c4b058ca
- git-author:
- Kevin Kirspel <kevin-kirspel@…> (03/21/17 19:39:48)
- git-committer:
- Sebastian Huber <sebastian.huber@…> (03/22/17 10:55:04)
- Files:
-
- 3 added
- 74 edited
Legend:
- Unmodified
- Added
- Removed
-
c/src/lib/libbsp/arm/csb336/console/uart.c
rc4b058ca r1c6926c1 323 323 int baud; 324 324 325 baud = rtems_termios_baud_to_number(t->c_ cflag & CBAUD);325 baud = rtems_termios_baud_to_number(t->c_ospeed); 326 326 imx_uart_set_baud(minor, baud); 327 327 -
c/src/lib/libbsp/arm/lpc32xx/console/hsu.c
rc4b058ca r1c6926c1 179 179 lpc32xx_hsu_context *ctx = (lpc32xx_hsu_context *) base; 180 180 volatile lpc32xx_hsu *hsu = ctx->hsu; 181 int baud_flags = term->c_ cflag & CBAUD;181 int baud_flags = term->c_ospeed; 182 182 183 183 if (baud_flags != 0) { -
c/src/lib/libbsp/i386/shared/comm/tty_drv.c
rc4b058ca r1c6926c1 228 228 unsigned long baud, databits, parity, stopbits; 229 229 230 baud = rtems_termios_baud_to_number(t->c_ cflag & CBAUD);230 baud = rtems_termios_baud_to_number(t->c_ospeed); 231 231 if ( baud > 115200 ) 232 232 rtems_fatal_error_occurred (RTEMS_INTERNAL_ERROR); -
c/src/lib/libbsp/lm32/shared/milkymist_console/console.c
rc4b058ca r1c6926c1 42 42 int baud; 43 43 44 switch (t->c_ cflag & CBAUD) {44 switch (t->c_ospeed) { 45 45 case B0: 46 46 baud = 0; -
c/src/lib/libbsp/m68k/av5282/console/console.c
rc4b058ca r1c6926c1 180 180 if ( t != (const struct termios *)0 ) { 181 181 /* determine baud rate index */ 182 baud = rtems_termios_baud_to_number(t->c_ cflag & CBAUD);182 baud = rtems_termios_baud_to_number(t->c_ospeed); 183 183 184 184 /* determine data bits */ … … 241 241 * determines which channel caused the interrupt before queueing any received 242 242 * chars and dequeueing chars waiting for transmission. 243 */ 243 */ 244 244 static rtems_isr IntUartInterruptHandler(rtems_vector_number v) 245 245 { … … 304 304 * internal uarts. If the internal uart is to be interrupt driven then the 305 305 * interrupt vectors are hooked. 306 */ 306 */ 307 307 static void IntUartInitialize(void) 308 308 { -
c/src/lib/libbsp/m68k/gen68340/console/console.c
rc4b058ca r1c6926c1 475 475 rtems_interrupt_level level; 476 476 float ispeed, ospeed; 477 int isp, osp;478 479 /* output speed */480 if (t->c_cflag & CBAUDEX)481 osp = (t->c_cflag & CBAUD) + CBAUD + 1;482 else483 osp = t->c_cflag & CBAUD;484 485 /* input speed */486 isp = (t->c_cflag / (CIBAUD / CBAUD)) & CBAUD;487 477 488 478 /* convert it */ 489 ispeed = rtems_termios_baud_to_number( isp);490 ospeed = rtems_termios_baud_to_number( osp);479 ispeed = rtems_termios_baud_to_number(t->c_ispeed); 480 ospeed = rtems_termios_baud_to_number(t->c_ospeed); 491 481 492 482 if (ispeed || ospeed) { … … 516 506 517 507 /* if serial module configuration has been changed */ 518 if (t->c_cflag & (C BAUD | CIBAUD | CSIZE | PARENB)) {508 if (t->c_cflag & (CSIZE | PARENB)) { 519 509 rtems_interrupt_disable(level); 520 510 /* reinit the UART */ … … 694 684 rtems_libio_ioctl_args_t *args = arg; 695 685 696 if (args->command == RTEMS_IO_SET_ATTRIBUTES)686 if (args->command == TIOCSETA) 697 687 SetAttributes (minor, (struct termios *)args->buffer); 698 688 -
c/src/lib/libbsp/m68k/gen68360/console/console.c
rc4b058ca r1c6926c1 87 87 int baud; 88 88 89 baud = rtems_termios_baud_to_number(t->c_ cflag & CBAUD);89 baud = rtems_termios_baud_to_number(t->c_ospeed); 90 90 if (baud > 0) 91 91 m360.brgc1 = smc1BRGC (baud); -
c/src/lib/libbsp/m68k/genmcf548x/console/console.c
rc4b058ca r1c6926c1 308 308 { 309 309 /* determine baud rate index */ 310 baud = GetBaud( t->c_cflag & CBAUD);310 baud = GetBaud( t->c_ospeed ); 311 311 312 312 /* determine data bits */ -
c/src/lib/libbsp/m68k/mcf52235/console/console.c
rc4b058ca r1c6926c1 153 153 if (t != (const struct termios *) 0) { 154 154 /* determine baud rate index */ 155 baud = rtems_termios_baud_to_number(t->c_ cflag & CBAUD);155 baud = rtems_termios_baud_to_number(t->c_ospeed); 156 156 157 157 /* determine data bits */ … … 599 599 600 600 if (tcgetattr(STDIN_FILENO, &term) >= 0) { 601 term.c_cflag &= ~(CBAUD | CSIZE); 602 term.c_cflag |= CS8 | B19200; 601 term.c_cflag &= ~(CSIZE); 602 term.c_cflag |= CS8; 603 term.c_ispeed = B19200; 604 term.c_ospeed = B19200; 603 605 tcsetattr(STDIN_FILENO, TCSANOW, &term); 604 606 } -
c/src/lib/libbsp/m68k/mcf5225x/console/console.c
rc4b058ca r1c6926c1 151 151 value and sets it. At the moment this just sets the baud rate. 152 152 153 Note: The highest baudrate is 115200 as this stays within 153 Note: The highest baudrate is 115200 as this stays within 154 154 an error of +/- 5% at 25MHz processor clock 155 155 ***************************************************************************/ … … 167 167 if (t != (const struct termios *) 0) { 168 168 /* determine baud rate index */ 169 baud = rtems_termios_baud_to_number(t->c_ cflag & CBAUD);169 baud = rtems_termios_baud_to_number(t->c_ospeed); 170 170 171 171 /* determine data bits */ … … 244 244 MCF_GPIO_PORTTC |= MCF_GPIO_PORTTC_PORTTC0; 245 245 #endif 246 246 247 247 /* read data and put into the receive buffer */ 248 248 while (MCF_UART_USR(chan) & MCF_UART_USR_RXRDY) { … … 360 360 Function : IntUartInterruptWrite 361 361 362 Description : This writes a single character to the appropriate uart 362 Description : This writes a single character to the appropriate uart 363 363 channel. This is either called during an interrupt or in the user's task 364 to initiate a transmit sequence. Calling this routine enables Tx 364 to initiate a transmit sequence. Calling this routine enables Tx 365 365 interrupts. 366 366 ***************************************************************************/ … … 477 477 Function : IntUartPollRead 478 478 479 Description : This reads a character from the internal uart. It returns 479 Description : This reads a character from the internal uart. It returns 480 480 to the caller without blocking if not character is waiting. 481 481 ***************************************************************************/ … … 492 492 Function : IntUartPollWrite 493 493 494 Description : This writes out each character in the buffer to the 495 appropriate internal uart channel waiting till each one is sucessfully 494 Description : This writes out each character in the buffer to the 495 appropriate internal uart channel waiting till each one is sucessfully 496 496 transmitted. 497 497 ***************************************************************************/ … … 563 563 Function : console_open 564 564 565 Description : This actually opens the device depending on the minor 565 Description : This actually opens the device depending on the minor 566 566 number set during initialisation. The device specific access routines are 567 567 passed to termios when the devices is opened depending on whether it is … … 632 632 633 633 if (tcgetattr(STDIN_FILENO, &term) >= 0) { 634 term.c_cflag &= ~(CBAUD | CSIZE); 635 term.c_cflag |= CS8 | B115200; 634 term.c_cflag &= ~(CSIZE); 635 term.c_cflag |= CS8; 636 term.c_ispeed = B115200; 637 term.c_ospeed = B115200; 636 638 tcsetattr(STDIN_FILENO, TCSANOW, &term); 637 639 } -
c/src/lib/libbsp/m68k/mcf5235/console/console.c
rc4b058ca r1c6926c1 175 175 { 176 176 /* determine baud rate index */ 177 baud = rtems_termios_baud_to_number(t->c_cflag & CBAUD);177 baud = rtems_termios_baud_to_number(t->c_ospeed); 178 178 179 179 /* determine data bits */ … … 682 682 if (tcgetattr (STDIN_FILENO, &term) >= 0) 683 683 { 684 term.c_cflag &= ~(CBAUD | CSIZE); 685 term.c_cflag |= CS8 | B19200; 684 term.c_cflag &= ~(CSIZE); 685 term.c_cflag |= CS8; 686 term.c_ispeed = B19200; 687 term.c_ospeed = B19200; 686 688 tcsetattr (STDIN_FILENO, TCSANOW, &term); 687 689 } -
c/src/lib/libbsp/m68k/mcf5329/console/console.c
rc4b058ca r1c6926c1 171 171 if (t != (const struct termios *) 0) { 172 172 /* determine baud rate index */ 173 baud = rtems_termios_baud_to_number(t->c_ cflag & CBAUD);173 baud = rtems_termios_baud_to_number(t->c_ospeed); 174 174 175 175 /* determine data bits */ … … 614 614 615 615 if (tcgetattr(STDIN_FILENO, &term) >= 0) { 616 term.c_cflag &= ~(CBAUD | CSIZE); 617 term.c_cflag |= CS8 | B19200; 616 term.c_cflag &= ~(CSIZE); 617 term.c_cflag |= CS8; 618 term.c_ispeed = B19200; 619 term.c_ospeed = B19200; 618 620 tcsetattr(STDIN_FILENO, TCSANOW, &term); 619 621 } -
c/src/lib/libbsp/m68k/mrm332/console/sci.c
rc4b058ca r1c6926c1 676 676 /* set the baud rate */ 677 677 678 baud_requested = t->c_ cflag & CBAUD;/* baud rate */678 baud_requested = t->c_ospeed; /* baud rate */ 679 679 680 680 if (!baud_requested) -
c/src/lib/libbsp/m68k/mvme167/console/console.c
rc4b058ca r1c6926c1 726 726 */ 727 727 newarg.iop = args->iop; 728 newarg.command = RTEMS_IO_GET_ATTRIBUTES;728 newarg.command = TIOCGETA; 729 729 newarg.buffer = &termios; 730 730 sc = rtems_termios_ioctl (&newarg); … … 739 739 */ 740 740 termios.c_cflag |= CLOCAL; /* Ignore modem status lines */ 741 newarg.command = RTEMS_IO_SET_ATTRIBUTES;741 newarg.command = TIOCGETA; 742 742 sc = rtems_termios_ioctl (&newarg); 743 743 if (sc != RTEMS_SUCCESSFUL) … … 845 845 846 846 /* baud rates */ 847 out_baud = rtems_termios_baud_to_number(t->c_ cflag & CBAUD);848 in_baud = rtems_termios_baud_to_number(t->c_ cflag & CBAUD);847 out_baud = rtems_termios_baud_to_number(t->c_ospeed); 848 in_baud = rtems_termios_baud_to_number(t->c_ispeed); 849 849 850 850 /* Number of bits per char */ -
c/src/lib/libbsp/m68k/uC5282/console/console.c
rc4b058ca r1c6926c1 191 191 { 192 192 /* determine baud rate index */ 193 baud = rtems_termios_baud_to_number(t->c_cflag & CBAUD);193 baud = rtems_termios_baud_to_number(t->c_ospeed); 194 194 195 195 /* determine data bits */ … … 448 448 break; 449 449 case 2: 450 MCF5282_GPIO_PASPAR = 450 MCF5282_GPIO_PASPAR = 451 451 (MCF5282_GPIO_PASPAR 452 452 & ~(MCF5282_GPIO_PASPAR_PASPA3(3)|MCF5282_GPIO_PASPAR_PASPA2(3))) -
c/src/lib/libbsp/powerpc/acinclude.m4
rc4b058ca r1c6926c1 33 33 tqm8xx ) 34 34 AC_CONFIG_SUBDIRS([tqm8xx]);; 35 virtex )36 AC_CONFIG_SUBDIRS([virtex]);;37 35 virtex4 ) 38 36 AC_CONFIG_SUBDIRS([virtex4]);; 39 37 virtex5 ) 40 38 AC_CONFIG_SUBDIRS([virtex5]);; 39 virtex ) 40 AC_CONFIG_SUBDIRS([virtex]);; 41 41 *) 42 42 AC_MSG_ERROR([Invalid BSP]);; -
c/src/lib/libbsp/powerpc/gen5200/console/console.c
rc4b058ca r1c6926c1 193 193 194 194 /* Baud rate */ 195 baud = rtems_termios_baud_to_number(t->c_ cflag & CBAUD);195 baud = rtems_termios_baud_to_number(t->c_ospeed); 196 196 if (baud > 0) { 197 197 /* -
c/src/lib/libbsp/powerpc/shared/console/console.c
rc4b058ca r1c6926c1 305 305 rtems_termios_baud_t baud; 306 306 307 baud = rtems_termios_baud_to_number(t->c_ cflag & CBAUD);307 baud = rtems_termios_baud_to_number(t->c_ospeed); 308 308 if ( baud > 115200 ) 309 309 rtems_fatal_error_occurred (RTEMS_INTERNAL_ERROR); -
c/src/lib/libbsp/powerpc/tqm8xx/console/console.c
rc4b058ca r1c6926c1 393 393 int baud; 394 394 395 switch (t->c_ cflag & CBAUD) {395 switch (t->c_ospeed) { 396 396 default: baud = -1; break; 397 397 case B50: baud = 50; break; -
c/src/lib/libbsp/shared/console.c
rc4b058ca r1c6926c1 245 245 */ 246 246 IoctlArgs.iop = args->iop; 247 IoctlArgs.command = RTEMS_IO_GET_ATTRIBUTES;247 IoctlArgs.command = TIOCGETA; 248 248 IoctlArgs.buffer = &Termios; 249 249 rtems_termios_ioctl( &IoctlArgs ); 250 250 251 251 Termios.c_lflag = ICANON; 252 IoctlArgs.command = RTEMS_IO_SET_ATTRIBUTES;252 IoctlArgs.command = TIOCSETA; 253 253 rtems_termios_ioctl( &IoctlArgs ); 254 254 } -
c/src/lib/libbsp/sparc/shared/uart/apbuart_cons.c
rc4b058ca r1c6926c1 40 40 #define DBG(x...) printk(x) 41 41 #else 42 #define DBG(x...) 42 #define DBG(x...) 43 43 #endif 44 44 … … 86 86 #endif 87 87 88 struct drvmgr_drv_ops apbuart_ops = 88 struct drvmgr_drv_ops apbuart_ops = 89 89 { 90 90 .init = {apbuart_init1, NULL, NULL, NULL}, … … 568 568 569 569 /* Baud rate */ 570 baud = apbuart_baud_num2baud(t->c_cflag & CBAUD);570 baud = apbuart_baud_num2baud(t->c_ospeed); 571 571 if (baud > 0){ 572 572 /* Get APBUART core frequency */ … … 589 589 struct apbuart_baud *baud; 590 590 591 t->c_cflag = t->c_cflag & ~(CSIZE|PARENB|PARODD|CLOCAL|CBAUD);591 t->c_cflag = t->c_cflag & ~(CSIZE|PARENB|PARODD|CLOCAL); 592 592 593 593 /* Hardware support only CS8 */ -
c/src/lib/libcpu/arm/at91rm9200/usart/usart.c
rc4b058ca r1c6926c1 241 241 mode |= US_MR_PAR_NONE; 242 242 243 baud_requested = t->c_ cflag & CBAUD;243 baud_requested = t->c_ospeed; 244 244 245 245 /* If not, set the dbgu console baud as USART baud default */ -
c/src/lib/libcpu/arm/s3c24xx/include/s3c2400.h
rc4b058ca r1c6926c1 555 555 /* 10 = ACTIVE */ 556 556 /* 11 = FRONT Porch */ 557 unsigned VSTATUS:2; /* TFT: Vertical Status (Read only). */557 unsigned _VSTATUS:2; /* TFT: Vertical Status (Read only). */ 558 558 /* 00 = VSYNC */ 559 559 /* 01 = BACK Porch. */ -
c/src/lib/libcpu/arm/s3c24xx/include/s3c2410.h
rc4b058ca r1c6926c1 703 703 /* 10 = ACTIVE */ 704 704 /* 11 = FRONT Porch */ 705 unsigned VSTATUS:2; /* TFT: Vertical Status (Read only). */705 unsigned _VSTATUS:2; /* TFT: Vertical Status (Read only). */ 706 706 /* 00 = VSYNC */ 707 707 /* 01 = BACK Porch. */ -
c/src/lib/libcpu/bfin/serial/uart.c
rc4b058ca r1c6926c1 10 10 * http://www.rtems.org/license/LICENSE. 11 11 */ 12 12 13 13 #include <rtems.h> 14 14 #include <rtems/libio.h> … … 160 160 161 161 base = uartsConfig->channels[minor].uart_baseAddress; 162 switch (termios->c_ cflag & CBAUD) {162 switch (termios->c_ospeed) { 163 163 case B0: baud = 0; break; 164 164 case B50: baud = 50; break; -
c/src/lib/libcpu/powerpc/mpc55xx/esci/esci.c
rc4b058ca r1c6926c1 363 363 364 364 /* Baud rate */ 365 switch (t->c_cflag & CBAUD) {365 switch (t->c_ospeed) { 366 366 case B50: br = 50; break; 367 367 case B75: br = 75; break; -
c/src/lib/libcpu/powerpc/mpc5xx/console-generic/console-generic.c
rc4b058ca r1c6926c1 191 191 192 192 /* Baud rate */ 193 baud = rtems_termios_baud_to_number( t->c_ cflag & CBAUD);193 baud = rtems_termios_baud_to_number( t->c_ospeed ); 194 194 if (baud > 0) { 195 195 sccr0 &= ~QSMCM_SCI_BAUD(-1); -
c/src/lib/libcpu/powerpc/mpc8260/console-generic/console-generic.c
rc4b058ca r1c6926c1 109 109 110 110 /* Baud rate */ 111 switch (t->c_ cflag & CBAUD) {111 switch (t->c_ospeed) { 112 112 default: baud = -1; break; 113 113 case B50: baud = 50; break; … … 222 222 223 223 /* Baud rate */ 224 switch (t->c_ cflag & CBAUD) {224 switch (t->c_ospeed) { 225 225 default: baud = -1; break; 226 226 case B50: baud = 50; break; -
c/src/lib/libcpu/powerpc/mpc8xx/console-generic/console-generic.c
rc4b058ca r1c6926c1 176 176 177 177 /* Baud rate */ 178 switch (t->c_ cflag & CBAUD) {178 switch (t->c_ospeed) { 179 179 default: baud = -1; break; 180 180 case B50: baud = 50; break; … … 272 272 273 273 /* Baud rate */ 274 switch (t->c_ cflag & CBAUD) {274 switch (t->c_ospeed) { 275 275 default: baud = -1; break; 276 276 case B50: baud = 50; break; -
c/src/lib/libcpu/powerpc/ppc403/console/console.c
rc4b058ca r1c6926c1 225 225 /* FIXME: check c_cflag & CRTSCTS for hardware flowcontrol */ 226 226 /* FIXME: check and IMPLEMENT XON/XOFF */ 227 switch (t->c_ cflag & CBAUD) {227 switch (t->c_ospeed) { 228 228 default: baud = -1; break; 229 229 case B50: baud = 50; break; -
c/src/lib/libcpu/powerpc/ppc403/console/console405.c
rc4b058ca r1c6926c1 217 217 /* FIXME: check c_cflag & CRTSCTS for hardware flowcontrol */ 218 218 /* FIXME: check and IMPLEMENT XON/XOFF */ 219 switch (t->c_ cflag & CBAUD) {219 switch (t->c_ospeed) { 220 220 default: baud = -1; break; 221 221 case B50: baud = 50; break; -
c/src/lib/libcpu/powerpc/ppc403/tty_drv/tty_drv.c
rc4b058ca r1c6926c1 182 182 /* FIXME: check c_cflag & CRTSCTS for hardware flow control */ 183 183 /* FIXME: check and IMPLEMENT XON/XOFF */ 184 switch (t->c_ cflag & CBAUD) {184 switch (t->c_ospeed) { 185 185 default: baud = -1; break; 186 186 case B50: baud = 50; break; -
c/src/lib/libcpu/sh/sh7032/sci/sci.c
rc4b058ca r1c6926c1 47 47 unsigned short opened ; 48 48 tcflag_t cflags ; 49 speed_t spd ; 49 50 } sci_device[SCI_MINOR_DEVICES] = 50 51 { 51 { "/dev/sci0", SH_SCI_BASE_0, 0, 0, B9600 | CS8},52 { "/dev/sci1", SH_SCI_BASE_1, 1, 0, B9600 | CS8}52 { "/dev/sci0", SH_SCI_BASE_0, 0, 0, CS8, B9600 }, 53 { "/dev/sci1", SH_SCI_BASE_1, 1, 0, CS8, B9600 } 53 54 } ; 54 55 55 56 /* imported from scitab.rel */ 56 57 extern int _sci_get_brparms( 57 tcflag_t cflag,58 speed_t spd, 58 59 unsigned char *smr, 59 60 unsigned char *brr ); … … 62 63 static int _sci_set_cflags( 63 64 struct scidev_t *sci_dev, 64 tcflag_t c_cflag ) 65 tcflag_t c_cflag, 66 speed_t spd ) 65 67 { 66 68 uint8_t smr ; 67 69 uint8_t brr ; 68 70 69 if ( c_cflag & CBAUD)70 { 71 if ( _sci_get_brparms( c_cflag, &smr, &brr ) != 0 )71 if ( spd ) 72 { 73 if ( _sci_get_brparms( spd, &smr, &brr ) != 0 ) 72 74 return -1 ; 73 75 } … … 240 242 temp8 &= ~(SCI_TE | SCI_RE) ; 241 243 write8(temp8, sci_device[minor].addr + SCI_SCR); /* Clear SCR */ 242 _sci_set_cflags( &sci_device[minor], sci_device[minor].cflags );244 _sci_set_cflags( &sci_device[minor], sci_device[minor].cflags, sci_device[minor].spd ); 243 245 244 246 /* FIXME: Should be one bit delay */ … … 251 253 temp8 &= ~(SCI_TE | SCI_RE) ; 252 254 write8(temp8, sci_device[minor].addr + SCI_SCR); /* Clear SCR */ 253 _sci_set_cflags( &sci_device[minor], sci_device[minor].cflags );255 _sci_set_cflags( &sci_device[minor], sci_device[minor].cflags, sci_device[minor].spd ); 254 256 255 257 /* FIXME: Should be one bit delay */ -
c/src/lib/libcpu/sh/sh7045/sci/sci.c
rc4b058ca r1c6926c1 73 73 #define SH_SCI_BASE_1 SCI_SMR1 74 74 75 #define SH_SCI_DEF_COMM_0 B9600 | CS876 #define SH_SCI_DEF_COMM_1 B38400 | CS877 /* #define SH_SCI_DEF_COMM_1 B9600 | CS8*/75 #define SH_SCI_DEF_COMM_0 CS8, B9600 76 #define SH_SCI_DEF_COMM_1 CS8, B38400 77 /* #define SH_SCI_DEF_COMM_1 CS8, B9600 */ 78 78 79 79 struct scidev_t { … … 83 83 unsigned short opened; 84 84 tcflag_t cflags; 85 speed_t spd; 85 86 } sci_device[SCI_MINOR_DEVICES] = 86 87 { … … 97 98 static int _sci_set_cflags( 98 99 struct scidev_t *sci_dev, 99 tcflag_t c_cflag 100 tcflag_t c_cflag, 101 speed_t spd 100 102 ) 101 103 { … … 103 105 uint8_t brr; 104 106 105 if ( c_cflag & CBAUD)107 if ( spd ) 106 108 { 107 if ( _sci_get_brparms( c_cflag, &smr, &brr ) != 0 )109 if ( _sci_get_brparms( spd, &smr, &brr ) != 0 ) 108 110 return -1; 109 111 } … … 352 354 write8(0x00, sci_device[minor].addr + SCI_SCR); /* Clear SCR */ 353 355 /* set SMR and BRR */ 354 _sci_set_cflags( &sci_device[minor], sci_device[minor].cflags );356 _sci_set_cflags( &sci_device[minor], sci_device[minor].cflags, sci_device[minor].spd ); 355 357 356 358 for (a=0; a < 10000L; a++) { /* Delay */ … … 527 529 static int _sh_sci_set_attributes( int minor, const struct termios *t) 528 530 { 529 return _sci_set_cflags( &sci_device[ minor ], t->c_cflag );531 return _sci_set_cflags( &sci_device[ minor ], t->c_cflag, t->c_ospeed); 530 532 } 531 533 -
c/src/lib/libcpu/sh/sh7045/sci/sci_termios.c
rc4b058ca r1c6926c1 60 60 */ 61 61 extern int _sci_get_brparms( 62 tcflag_t cflag,62 speed_t spd, 63 63 unsigned char *smr, 64 64 unsigned char *brr … … 78 78 79 79 tcflag_t c_cflag = t->c_cflag; 80 81 if ( c_cflag & CBAUD ) { 82 if ( _sci_get_brparms( c_cflag, &smr, &brr ) != 0 ) 80 speed_t spd = t->c_ospeed; 81 82 if ( spd ) { 83 if ( _sci_get_brparms( spd, &smr, &brr ) != 0 ) 83 84 return -1 ; 84 85 } -
c/src/libchip/serial/mc68681.c
rc4b058ca r1c6926c1 582 582 } 583 583 584 baud_requested = baud & CBAUD;584 baud_requested = baud; 585 585 if (!baud_requested) 586 586 baud_requested = B9600; /* default to 9600 baud */ -
c/src/libchip/serial/mc68681_baud.c
rc4b058ca r1c6926c1 31 31 MC68681_BAUD_NOT_VALID, /* B19200 */ 32 32 0x0C, /* B38400 */ 33 MC68681_BAUD_NOT_VALID, /* B7200 */ 34 MC68681_BAUD_NOT_VALID, /* B14400 */ 35 MC68681_BAUD_NOT_VALID, /* B28800 */ 33 36 MC68681_BAUD_NOT_VALID, /* B57600 */ 37 MC68681_BAUD_NOT_VALID, /* B76800 */ 34 38 MC68681_BAUD_NOT_VALID, /* B115200 */ 35 39 MC68681_BAUD_NOT_VALID, /* B230400 */ 36 MC68681_BAUD_NOT_VALID /* B460800 */ 40 MC68681_BAUD_NOT_VALID, /* B460800 */ 41 MC68681_BAUD_NOT_VALID /* B921600 */ 37 42 }, 38 43 { /* ACR[7] = 1, X = 0 */ … … 53 58 0x0C, /* B19200 */ 54 59 MC68681_BAUD_NOT_VALID, /* B38400 */ 60 MC68681_BAUD_NOT_VALID, /* B7200 */ 61 MC68681_BAUD_NOT_VALID, /* B14400 */ 62 MC68681_BAUD_NOT_VALID, /* B28800 */ 55 63 MC68681_BAUD_NOT_VALID, /* B57600 */ 64 MC68681_BAUD_NOT_VALID, /* B76800 */ 56 65 MC68681_BAUD_NOT_VALID, /* B115200 */ 57 66 MC68681_BAUD_NOT_VALID, /* B230400 */ 58 MC68681_BAUD_NOT_VALID /* B460800 */ 67 MC68681_BAUD_NOT_VALID, /* B460800 */ 68 MC68681_BAUD_NOT_VALID /* B921600 */ 59 69 }, 60 70 { /* ACR[7] = 0, X = 1 */ … … 75 85 0x0C, /* B19200 */ 76 86 MC68681_BAUD_NOT_VALID, /* B38400 */ 87 MC68681_BAUD_NOT_VALID, /* B7200 */ 88 MC68681_BAUD_NOT_VALID, /* B14400 */ 89 MC68681_BAUD_NOT_VALID, /* B28800 */ 77 90 0x07, /* B57600 */ 91 MC68681_BAUD_NOT_VALID, /* B76800 */ 78 92 0x08, /* B115200 */ 79 93 MC68681_BAUD_NOT_VALID, /* B230400 */ 80 MC68681_BAUD_NOT_VALID /* B460800 */ 94 MC68681_BAUD_NOT_VALID, /* B460800 */ 95 MC68681_BAUD_NOT_VALID /* B921600 */ 81 96 }, 82 97 { /* ACR[7] = 1, X = 1 */ … … 97 112 MC68681_BAUD_NOT_VALID, /* B19200 */ 98 113 0x0C, /* B38400 */ 114 MC68681_BAUD_NOT_VALID, /* B7200 */ 115 MC68681_BAUD_NOT_VALID, /* B14400 */ 116 MC68681_BAUD_NOT_VALID, /* B28800 */ 99 117 0x07, /* B57600 */ 118 MC68681_BAUD_NOT_VALID, /* B76800 */ 100 119 0x08, /* B115200 */ 101 120 MC68681_BAUD_NOT_VALID, /* B230400 */ 102 MC68681_BAUD_NOT_VALID /* B460800 */ 121 MC68681_BAUD_NOT_VALID, /* B460800 */ 122 MC68681_BAUD_NOT_VALID /* B921600 */ 103 123 }, 104 124 }; -
c/src/libchip/serial/z85c30.c
rc4b058ca r1c6926c1 450 450 */ 451 451 452 baud_requested = t->c_ cflag & CBAUD;452 baud_requested = t->c_ospeed; 453 453 if (!baud_requested) 454 454 baud_requested = B9600; /* default to 9600 baud */ -
cpukit/libcsupport/Makefile.am
rc4b058ca r1c6926c1 55 55 src/termios_baud2index.c src/termios_baud2num.c src/termios_num2baud.c \ 56 56 src/termios_setinitialbaud.c src/termios_baudtable.c src/cfsetspeed.c \ 57 src/cfmakeraw.c src/ termios_setbestbaud.c57 src/cfmakeraw.c src/cfmakesane.c src/termios_setbestbaud.c 58 58 59 59 SYSTEM_CALL_C_FILES = src/open.c src/close.c src/read.c src/write.c \ -
cpukit/libcsupport/include/rtems/termiostypes.h
rc4b058ca r1c6926c1 528 528 * @retval other Baud constant according to @a baud. 529 529 */ 530 tcflag_t rtems_termios_number_to_baud(rtems_termios_baud_t baud);530 speed_t rtems_termios_number_to_baud(rtems_termios_baud_t baud); 531 531 532 532 /** … … 538 538 * @retval other Integral baud value. 539 539 */ 540 rtems_termios_baud_t rtems_termios_baud_to_number( tcflag_t c_cflag);541 542 /** 543 * @brief Convert Bxxx Constant to Index 540 rtems_termios_baud_t rtems_termios_baud_to_number(speed_t c_cflag); 541 542 /** 543 * @brief Convert Bxxx Constant to Index 544 544 */ 545 545 int rtems_termios_baud_to_index(rtems_termios_baud_t termios_baud); -
cpukit/libcsupport/include/sys/ioccom.h
rc4b058ca r1c6926c1 70 70 #define _IOWR(g,n,t) _IOC(IOC_INOUT, (g), (n), sizeof(t)) 71 71 72 /*73 * IOCTL values74 */75 76 #define RTEMS_IO_GET_ATTRIBUTES 177 #define RTEMS_IO_SET_ATTRIBUTES 278 #define RTEMS_IO_TCDRAIN 379 #define RTEMS_IO_RCVWAKEUP 480 #define RTEMS_IO_SNDWAKEUP 581 #define RTEMS_IO_TCFLUSH 682 83 72 #ifdef _KERNEL 84 73 -
cpukit/libcsupport/include/sys/termios.h
rc4b058ca r1c6926c1 1 /** 2 * @file 1 /*- 2 * Copyright (c) 1988, 1989, 1993, 1994 3 * The Regents of the University of California. All rights reserved. 3 4 * 4 * @brief POSIX Termios Implementation for RTEMS Console Device Driver 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright 11 * notice, this list of conditions and the following disclaimer in the 12 * documentation and/or other materials provided with the distribution. 13 * 3. Neither the name of the University nor the names of its contributors 14 * may be used to endorse or promote products derived from this software 15 * without specific prior written permission. 5 16 * 6 * The Open Group Base Specifications Issue 6 7 * IEEE Std 1003.1, 2004 Edition 8 * Chapter 11, General Terminal Interface 17 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 18 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 * SUCH DAMAGE. 28 * 29 * @(#)termios.h 8.3 (Berkeley) 3/28/94 30 * $FreeBSD: head/include/termios.h 265878 2014-05-11 13:48:21Z jilles $ 9 31 */ 10 32 11 /* 12 * COPYRIGHT (c) 1989-2011. 13 * On-Line Applications Research Corporation (OAR). 14 * 15 * The license and distribution terms for this file may be 16 * found in the file LICENSE in this distribution or at 17 * http://www.rtems.org/license/LICENSE. 18 */ 33 #ifndef _TERMIOS_H_ 34 #define _TERMIOS_H_ 19 35 20 #ifndef TERMIOS_H 21 #define TERMIOS_H 36 #include <sys/cdefs.h> 37 #include <sys/_termios.h> 38 #include <sys/_types.h> 22 39 23 #include <sys/types.h> 24 25 #ifdef __cplusplus 26 extern "C" { 40 #ifndef _PID_T_DECLARED 41 typedef __pid_t pid_t; 42 #define _PID_T_DECLARED 27 43 #endif 28 44 29 /** 30 * @ingroup Termios 31 * 32 * @brief POSIX Termios Implementation 33 * 45 #if !_POSIX_SOURCE || __rtems__ 46 #define OXTABS TAB3 47 #define MDMBUF CCAR_OFLOW 48 #endif 49 50 #if !_POSIX_SOURCE || __rtems__ 51 #define CCEQ(val, c) ((c) == (val) && (val) != _POSIX_VDISABLE) 52 #endif 53 54 /* 55 * Commands passed to tcsetattr() for setting the termios structure. 34 56 */ 35 /**@{**/ 57 #define TCSANOW 0 /* make change immediate */ 58 #define TCSADRAIN 1 /* drain output, then change */ 59 #define TCSAFLUSH 2 /* drain output, flush input */ 60 #if !_POSIX_SOURCE || __rtems__ 61 #define TCSASOFT 0x10 /* flag - don't alter h.w. state */ 62 #endif 36 63 37 typedef unsigned char cc_t; 38 typedef unsigned int speed_t; 39 typedef unsigned int tcflag_t; 64 #define TCIFLUSH 1 65 #define TCOFLUSH 2 66 #define TCIOFLUSH 3 67 #define TCOOFF 1 68 #define TCOON 2 69 #define TCIOFF 3 70 #define TCION 4 40 71 41 #define NCCS 19 42 struct termios { 43 tcflag_t c_iflag; /* input mode flags */ 44 tcflag_t c_oflag; /* output mode flags */ 45 tcflag_t c_cflag; /* control mode flags */ 46 tcflag_t c_lflag; /* local mode flags */ 47 cc_t c_line; /* line discipline */ 48 cc_t c_cc[NCCS]; /* control characters */ 49 }; 50 51 /** 52 * This value is used to disable processing of a member of c_cc 53 * in the struct termios. 54 */ 55 #define _POSIX_VDISABLE 0 56 57 /* c_cc characters */ 58 #define VINTR 0 59 #define VQUIT 1 60 #define VERASE 2 61 #define VKILL 3 62 #define VEOF 4 63 #define VTIME 5 64 #define VMIN 6 65 #define VSWTC 7 66 #define VSTART 8 67 #define VSTOP 9 68 #define VSUSP 10 69 #define VEOL 11 70 #define VREPRINT 12 71 #define VDISCARD 13 72 #define VWERASE 14 73 #define VLNEXT 15 74 #define VEOL2 16 75 76 /* c_iflag bits */ 77 #define IGNBRK 0000001 78 #define BRKINT 0000002 79 #define IGNPAR 0000004 80 #define PARMRK 0000010 81 #define INPCK 0000020 82 #define ISTRIP 0000040 83 #define INLCR 0000100 84 #define IGNCR 0000200 85 #define ICRNL 0000400 86 #define IUCLC 0001000 87 #define IXON 0002000 88 #define IXANY 0004000 89 #define IXOFF 0010000 90 #define IMAXBEL 0020000 91 92 /* c_oflag bits */ 93 #define OPOST 0000001 94 #define OLCUC 0000002 95 #define ONLCR 0000004 96 #define OCRNL 0000010 97 #define ONOCR 0000020 98 #define ONLRET 0000040 99 #define OFILL 0000100 100 #define OFDEL 0000200 101 #define NLDLY 0000400 102 #define NL0 0000000 103 #define NL1 0000400 104 #define CRDLY 0003000 105 #define CR0 0000000 106 #define CR1 0001000 107 #define CR2 0002000 108 #define CR3 0003000 109 #define TABDLY 0014000 110 #define TAB0 0000000 111 #define TAB1 0004000 112 #define TAB2 0010000 113 #define TAB3 0014000 114 #define XTABS 0014000 115 #define BSDLY 0020000 116 #define BS0 0000000 117 #define BS1 0020000 118 #define VTDLY 0040000 119 #define VT0 0000000 120 #define VT1 0040000 121 #define FFDLY 0100000 122 #define FF0 0000000 123 #define FF1 0100000 124 125 /* c_cflag bit meaning */ 126 #define CBAUD 0010017 127 #define B0 0000000 /* hang up */ 128 #define B50 0000001 129 #define B75 0000002 130 #define B110 0000003 131 #define B134 0000004 132 #define B150 0000005 133 #define B200 0000006 134 #define B300 0000007 135 #define B600 0000010 136 #define B1200 0000011 137 #define B1800 0000012 138 #define B2400 0000013 139 #define B4800 0000014 140 #define B9600 0000015 141 #define B19200 0000016 142 #define B38400 0000017 143 #define EXTA B19200 144 #define EXTB B38400 145 #define CSIZE 0000060 146 #define CS5 0000000 147 #define CS6 0000020 148 #define CS7 0000040 149 #define CS8 0000060 150 #define CSTOPB 0000100 151 #define CREAD 0000200 152 #define PARENB 0000400 153 #define PARODD 0001000 154 #define HUPCL 0002000 155 #define CLOCAL 0004000 156 #define CBAUDEX 0010000 157 #define B57600 0010001 158 #define B115200 0010002 159 #define B230400 0010003 160 #define B460800 0010004 161 #define CIBAUD 002003600000 /* input baud rate (not used) */ 162 #define CRTSCTS 020000000000 /* flow control */ 163 164 #define RTEMS_TERMIOS_NUMBER_BAUD_RATES 20 165 166 /* c_lflag bits */ 167 #define ISIG 0000001 168 #define ICANON 0000002 169 #define XCASE 0000004 170 #define ECHO 0000010 171 #define ECHOE 0000020 172 #define ECHOK 0000040 173 #define ECHONL 0000100 174 #define NOFLSH 0000200 175 #define TOSTOP 0000400 176 #define ECHOCTL 0001000 177 #define ECHOPRT 0002000 178 #define ECHOKE 0004000 179 #define FLUSHO 0010000 180 #define PENDIN 0040000 181 #define IEXTEN 0100000 182 183 /* tcflow() and TCXONC use these */ 184 #define TCOOFF 0 185 #define TCOON 1 186 #define TCIOFF 2 187 #define TCION 3 188 189 /* tcflush() and TCFLSH use these */ 190 #define TCIFLUSH 0 191 #define TCOFLUSH 1 192 #define TCIOFLUSH 2 193 194 /* tcsetattr uses these */ 195 #define TCSANOW 0 196 #define TCSADRAIN 1 197 #define TCSAFLUSH 2 198 72 __BEGIN_DECLS 73 speed_t cfgetispeed(const struct termios *); 74 speed_t cfgetospeed(const struct termios *); 75 int cfsetispeed(struct termios *, speed_t); 76 int cfsetospeed(struct termios *, speed_t); 77 int tcgetattr(int, struct termios *); 78 int tcsetattr(int, int, const struct termios *); 199 79 int tcdrain(int); 200 80 int tcflow(int, int); 201 81 int tcflush(int, int); 202 int tcgetattr(int, struct termios *);203 int tcsetattr(int, int, struct termios *);204 int tcdrain(int);205 pid_t tcgetprgrp(int);206 int tcsetprgrp(int, pid_t);207 82 int tcsendbreak(int, int); 208 speed_t cfgetospeed(const struct termios *tp);209 int cfsetospeed(struct termios *tp, speed_t speed);210 speed_t cfgetispeed(const struct termios *tp);211 int cfsetispeed(struct termios *tp, speed_t speed);212 void cfmakeraw(struct termios *tp);213 int cfsetspeed(struct termios *tp, speed_t speed);214 83 215 /** @} */ 84 #if __POSIX_VISIBLE >= 200112 85 pid_t tcgetsid(int); 86 #endif 87 #if __BSD_VISIBLE 88 int tcsetsid(int, pid_t); 216 89 217 #ifdef __cplusplus 218 } 90 void cfmakeraw(struct termios *); 91 void cfmakesane(struct termios *); 92 int cfsetspeed(struct termios *, speed_t); 219 93 #endif 94 __END_DECLS 220 95 221 #endif /* TERMIOS_H */ 96 #endif /* !_TERMIOS_H_ */ 97 98 #if !_POSIX_SOURCE || __rtems__ 99 #include <sys/ttycom.h> 100 #include <sys/ttydefaults.h> 101 #endif -
cpukit/libcsupport/include/sys/ttycom.h
rc4b058ca r1c6926c1 61 61 /* 8-10 compat */ 62 62 /* 11-12 unused */ 63 #define TIOCEXCL _IO('t', 13) /* set exclusive use of tty */ 63 #ifdef __rtems__ 64 #define RTEMS_IO_SNDWAKEUP _IOW('t', 11, struct ttywakeup ) /* send tty wakeup */ 65 #define RTEMS_IO_RCVWAKEUP _IOW('t', 12, struct ttywakeup ) /* recv tty wakeup */ 66 #endif /* __rtems__ */ 67 #define TIOCEXCL _IO('t', 13) /* set exclusive use of tty */ 64 68 #define TIOCNXCL _IO('t', 14) /* reset exclusive use of tty */ 65 69 #define TIOCGPTN _IOR('t', 15, int) /* Get pts number. */ -
cpukit/libcsupport/src/cfgetispeed.c
rc4b058ca r1c6926c1 31 31 ) 32 32 { 33 return (tp->c_cflag / (CIBAUD / CBAUD)) & CBAUD;33 return tp->c_ispeed; 34 34 } 35 35 #endif -
cpukit/libcsupport/src/cfgetospeed.c
rc4b058ca r1c6926c1 34 34 ) 35 35 { 36 return tp->c_ cflag & CBAUD;36 return tp->c_ospeed; 37 37 } 38 38 #endif -
cpukit/libcsupport/src/cfmakeraw.c
rc4b058ca r1c6926c1 55 55 ) 56 56 { 57 tp->c_iflag &= ~(IMAXBEL|IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON); 57 tp->c_iflag &= ~(IMAXBEL|IXOFF|INPCK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IGNPAR); 58 tp->c_iflag |= IGNBRK; 58 59 tp->c_oflag &= ~OPOST; 59 tp->c_lflag &= ~(ECHO|ECHO NL|ICANON|ISIG|IEXTEN);60 tp->c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHONL|ICANON|ISIG|IEXTEN|NOFLSH|TOSTOP|PENDIN); 60 61 tp->c_cflag &= ~(CSIZE|PARENB); 61 tp->c_cflag |= CS8; 62 /* XXX set MIN/TIME */ 62 tp->c_cflag |= CS8|CREAD; 63 tp->c_cc[VMIN] = 1; 64 tp->c_cc[VTIME] = 0; 63 65 } 64 66 #endif -
cpukit/libcsupport/src/cfsetispeed.c
rc4b058ca r1c6926c1 26 26 #include <errno.h> 27 27 #include <termios.h> 28 29 #include <rtems/libio_.h> 28 #include <rtems/termiostypes.h> 30 29 #include <rtems/seterr.h> 31 30 … … 38 37 ) 39 38 { 40 if ( speed & ~CBAUD)39 if ( rtems_termios_baud_to_index( speed ) == -1 ) 41 40 rtems_set_errno_and_return_minus_one( EINVAL ); 42 41 43 tp->c_ cflag = (tp->c_cflag & ~CIBAUD) | (speed * (CIBAUD / CBAUD));42 tp->c_ispeed = speed; 44 43 return 0; 45 44 } -
cpukit/libcsupport/src/cfsetospeed.c
rc4b058ca r1c6926c1 26 26 #include <errno.h> 27 27 #include <termios.h> 28 29 #include <rtems/libio_.h> 28 #include <rtems/termiostypes.h> 30 29 #include <rtems/seterr.h> 31 30 … … 38 37 ) 39 38 { 40 if ( speed & ~CBAUD)39 if ( rtems_termios_baud_to_index( speed ) == -1 ) 41 40 rtems_set_errno_and_return_minus_one( EINVAL ); 42 41 43 tp->c_ cflag = (tp->c_cflag & ~CBAUD) |speed;42 tp->c_ospeed = speed; 44 43 return 0; 45 44 } -
cpukit/libcsupport/src/cfsetspeed.c
rc4b058ca r1c6926c1 25 25 #include <errno.h> 26 26 #include <termios.h> 27 #include <rtems/termiostypes.h> 27 28 #include <rtems/seterr.h> 28 29 … … 32 33 ) 33 34 { 34 if ( speed & ~CBAUD)35 if ( rtems_termios_baud_to_index( speed ) == -1 ) 35 36 rtems_set_errno_and_return_minus_one( EINVAL ); 36 37 -
cpukit/libcsupport/src/tcdrain.c
rc4b058ca r1c6926c1 37 37 ) 38 38 { 39 return ioctl( fd, RTEMS_IO_TCDRAIN, 0 );39 return ioctl( fd, TIOCDRAIN, 0 ); 40 40 } 41 41 -
cpukit/libcsupport/src/tcflush.c
rc4b058ca r1c6926c1 14 14 #endif 15 15 16 #include <sys/fcntl.h> 16 17 #include <termios.h> 17 18 #include <stdint.h> 18 19 #include <sys/ioccom.h> 20 #include <rtems/libio.h> 21 #include <rtems/libio_.h> 22 #include <rtems/seterr.h> 19 23 20 int tcflush( int fd, int queue)24 int tcflush( int fd, int which ) 21 25 { 22 return ioctl( fd, RTEMS_IO_TCFLUSH, (intptr_t) queue ); 26 int com; 27 28 switch (which) { 29 case TCIFLUSH: 30 com = FREAD; 31 break; 32 case TCOFLUSH: 33 com = FWRITE; 34 break; 35 case TCIOFLUSH: 36 com = FREAD | FWRITE; 37 break; 38 default: 39 rtems_set_errno_and_return_minus_one( EINVAL ); 40 } 41 return ioctl( fd, TIOCFLUSH, &com ); 23 42 } -
cpukit/libcsupport/src/tcgetattr.c
rc4b058ca r1c6926c1 35 35 ) 36 36 { 37 return ioctl( fd, RTEMS_IO_GET_ATTRIBUTES, tp );37 return ioctl( fd, TIOCGETA, tp ); 38 38 } 39 39 #endif -
cpukit/libcsupport/src/tcsetattr.c
rc4b058ca r1c6926c1 36 36 */ 37 37 int tcsetattr( 38 int fd,39 int opt,40 struct termios *tp38 int fd, 39 int opt, 40 const struct termios *tp 41 41 ) 42 42 { 43 switch (opt) { 44 default: 45 rtems_set_errno_and_return_minus_one( ENOTSUP ); 43 struct termios localterm; 44 45 if (opt & TCSASOFT) { 46 localterm = *tp; 47 localterm.c_cflag |= CIGNORE; 48 tp = &localterm; 49 } 50 51 switch (opt & ~TCSASOFT) { 52 53 case TCSANOW: 54 return ioctl( fd, TIOCSETA, tp ); 46 55 47 56 case TCSADRAIN: 48 if (ioctl( fd, RTEMS_IO_TCDRAIN, NULL ) < 0)49 return -1; 50 /*51 * Fall through to....52 */ 53 case TCSANOW:54 r eturn ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, tp);57 return ioctl( fd, TIOCSETAW, tp ); 58 59 case TCSAFLUSH: 60 return ioctl( fd, TIOCSETAF, tp ); 61 62 default: 63 rtems_set_errno_and_return_minus_one( EINVAL ); 55 64 } 56 65 } -
cpukit/libcsupport/src/termios.c
rc4b058ca r1c6926c1 31 31 #include <termios.h> 32 32 #include <unistd.h> 33 #include <sys/fcntl.h> 33 34 #include <sys/ttycom.h> 34 35 … … 847 848 struct ttywakeup *wakeup = (struct ttywakeup *)args->buffer; 848 849 rtems_status_code sc; 850 int flags = *((int *)args->buffer); 849 851 850 852 args->ioctl_return = 0; … … 866 868 break; 867 869 868 case RTEMS_IO_GET_ATTRIBUTES:870 case TIOCGETA: 869 871 *(struct termios *)args->buffer = tty->termios; 870 872 break; 871 873 872 case RTEMS_IO_SET_ATTRIBUTES: 874 case TIOCSETA: 875 case TIOCSETAW: 876 case TIOCSETAF: 873 877 tty->termios = *(struct termios *)args->buffer; 874 878 879 if (args->command == TIOCSETAW || args->command == TIOCSETAF) { 880 drainOutput (tty); 881 if (args->command == TIOCSETAF) { 882 flushInput (tty); 883 } 884 } 875 885 /* check for and process change in flow control options */ 876 886 termios_set_flowctrl(tty); … … 881 891 tty->rawInBufSemaphoreFirstTimeout = RTEMS_NO_TIMEOUT; 882 892 } else { 883 tty->vtimeTicks = tty->termios.c_cc[VTIME] * 893 tty->vtimeTicks = tty->termios.c_cc[VTIME] * 884 894 rtems_clock_get_ticks_per_second() / 10; 885 895 if (tty->termios.c_cc[VTIME]) { … … 906 916 break; 907 917 908 case RTEMS_IO_TCDRAIN:918 case TIOCDRAIN: 909 919 drainOutput (tty); 910 920 break; 911 921 912 case RTEMS_IO_TCFLUSH: 913 switch ((intptr_t) args->buffer) { 914 case TCIFLUSH: 915 flushInput (tty); 916 break; 917 case TCOFLUSH: 918 flushOutput (tty); 919 break; 920 case TCIOFLUSH: 921 flushOutput (tty); 922 flushInput (tty); 923 break; 924 default: 925 sc = RTEMS_INVALID_NAME; 926 break; 922 case TIOCFLUSH: 923 if (flags == 0) { 924 flags = FREAD | FWRITE; 925 } else { 926 flags &= FREAD | FWRITE; 927 } 928 if (flags & FWRITE) { 929 flushOutput (tty); 930 } 931 if (flags & FREAD) { 932 flushInput (tty); 927 933 } 928 934 break; -
cpukit/libcsupport/src/termios_baud2index.c
rc4b058ca r1c6926c1 45 45 case B19200: baud_index = 14; break; 46 46 case B38400: baud_index = 15; break; 47 case B57600: baud_index = 16; break; 48 case B115200: baud_index = 17; break; 49 case B230400: baud_index = 18; break; 50 case B460800: baud_index = 19; break; 47 case B7200: baud_index = 16; break; 48 case B14400: baud_index = 17; break; 49 case B28800: baud_index = 18; break; 50 case B57600: baud_index = 19; break; 51 case B76800: baud_index = 20; break; 52 case B115200: baud_index = 21; break; 53 case B230400: baud_index = 22; break; 54 case B460800: baud_index = 23; break; 55 case B921600: baud_index = 24; break; 51 56 default: baud_index = -1; break; 52 57 } -
cpukit/libcsupport/src/termios_baud2num.c
rc4b058ca r1c6926c1 21 21 #include <rtems/termiostypes.h> 22 22 23 rtems_termios_baud_t rtems_termios_baud_to_number( tcflag_t c_cflag)23 rtems_termios_baud_t rtems_termios_baud_to_number(speed_t spd) 24 24 { 25 uint32_t remote_value = (uint32_t) (c_cflag & CBAUD); 26 27 return rtems_assoc_local_by_remote(rtems_termios_baud_table, remote_value); 25 return rtems_assoc_local_by_remote(rtems_termios_baud_table, spd); 28 26 } -
cpukit/libcsupport/src/termios_baudtable.c
rc4b058ca r1c6926c1 38 38 { "B19200", 19200, B19200 }, 39 39 { "B38400", 38400, B38400 }, 40 { "B7200", 7200, B7200 }, 41 { "B14400", 14400, B14400 }, 42 { "B28800", 28800, B28800 }, 40 43 { "B57600", 57600, B57600 }, 44 { "B76800", 76800, B76800 }, 41 45 { "B115200", 115200, B115200 }, 42 46 { "B230400", 230400, B230400 }, 43 47 { "B460800", 460800, B460800 }, 48 { "B921600", 921600, B921600 }, 44 49 { NULL, 0, 0 } 45 50 }; -
cpukit/libcsupport/src/termios_setbestbaud.c
rc4b058ca r1c6926c1 26 26 const rtems_assoc_t *current = &rtems_termios_baud_table[ 0 ]; 27 27 const rtems_assoc_t *last = current; 28 tcflag_t cbaud_mask = CBAUD; 29 tcflag_t cbaud; 28 speed_t spd; 30 29 31 30 while ( current->name != NULL && current->local_value < baud ) { … … 37 36 uint32_t mid = (last->local_value + current->local_value) / UINT32_C( 2 ); 38 37 39 cbaud = baud <= mid ? last->remote_value : current->remote_value;38 spd = baud <= mid ? last->remote_value : current->remote_value; 40 39 } else { 41 cbaud = B460800;40 spd = B460800; 42 41 } 43 42 44 term->c_cflag = (term->c_cflag & ~cbaud_mask) | cbaud; 43 term->c_ispeed = spd; 44 term->c_ospeed = spd; 45 45 } -
cpukit/libcsupport/src/termios_setinitialbaud.c
rc4b058ca r1c6926c1 27 27 { 28 28 int rv = 0; 29 tcflag_t c_cflag_baud = rtems_termios_number_to_baud(baud);29 speed_t spd = rtems_termios_number_to_baud(baud); 30 30 31 if ( c_cflag_baud != 0 ) { 32 tcflag_t cbaud = CBAUD; 33 34 tty->termios.c_cflag = (tty->termios.c_cflag & ~cbaud) | c_cflag_baud; 31 if ( spd != 0 ) { 32 tty->termios.c_ispeed = spd; 33 tty->termios.c_ospeed = spd; 35 34 } else { 36 35 rv = -1; -
cpukit/libnetworking/net/ppp_tty.c
rc4b058ca r1c6926c1 225 225 sc->sc_outm = NULL; 226 226 sc->sc_outmc = NULL; 227 227 228 228 /* preallocate mbufs for free queue */ 229 229 rtems_bsdnet_semaphore_obtain(); … … 244 244 /* initialize values */ 245 245 sc->sc_if.if_flags |= IFF_RUNNING; 246 sc->sc_if.if_baudrate = 247 rtems_termios_baud_to_number(tty->termios.c_cflag & CBAUD); 246 sc->sc_if.if_baudrate = tty->termios.c_ispeed; 248 247 249 248 tty->t_sc = (void *)sc; … … 375 374 int len; 376 375 int maximum = rw_args->count; 377 char *out_buffer = rw_args->buffer; 376 char *out_buffer = rw_args->buffer; 378 377 register struct ppp_softc *sc = (struct ppp_softc *)tty->t_sc; 379 378 struct mbuf *m; … … 433 432 434 433 switch (cmd) { 435 case RTEMS_IO_GET_ATTRIBUTES: 436 case RTEMS_IO_SET_ATTRIBUTES: 437 case RTEMS_IO_TCDRAIN: 434 case TIOCGETA: 435 case TIOCSETA: 436 case TIOCSETAW: 437 case TIOCSETAF: 438 case TIOCDRAIN: 438 439 case RTEMS_IO_SNDWAKEUP: 439 440 case RTEMS_IO_RCVWAKEUP: -
cpukit/preinstall.am
rc4b058ca r1c6926c1 104 104 $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/ttycom.h 105 105 PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/ttycom.h 106 107 $(PROJECT_INCLUDE)/sys/ttydefaults.h: libcsupport/include/sys/ttydefaults.h $(PROJECT_INCLUDE)/sys/$(dirstamp) 108 $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/ttydefaults.h 109 PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/ttydefaults.h 110 111 $(PROJECT_INCLUDE)/sys/_termios.h: libcsupport/include/sys/_termios.h $(PROJECT_INCLUDE)/sys/$(dirstamp) 112 $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/sys/_termios.h 113 PREINSTALL_FILES += $(PROJECT_INCLUDE)/sys/_termios.h 106 114 107 115 $(PROJECT_INCLUDE)/sys/termios.h: libcsupport/include/sys/termios.h $(PROJECT_INCLUDE)/sys/$(dirstamp) -
testsuites/libtests/termios/init.c
rc4b058ca r1c6926c1 47 47 void print_c_cflag(struct termios * tp); 48 48 void print_c_cc(struct termios * tp); 49 void print_baud(const char* name, speed_t spd); 49 50 void print_termios(struct termios *tp); 50 51 unsigned long get_baud_rate(void); … … 119 120 printf( "ONLCR " ); 120 121 122 if( tp->c_oflag & ONOEOT ) 123 printf( "ONOEOT " ); 124 121 125 if( tp->c_oflag & OCRNL ) 122 126 printf( "OCRNL " ); … … 216 220 { 217 221 char * c_lflag_bits [] = { 218 "ISIG", /* 0000001 */ 219 "ICANON", /* 0000002 */ 220 "XCASE", /* 0000004 */ 221 "ECHO", /* 0000010 */ 222 "ECHOE", /* 0000020 */ 223 "ECHOK", /* 0000040 */ 224 "ECHONL", /* 0000100 */ 225 "NOFLSH", /* 0000200 */ 226 "TOSTOP", /* 0000400 */ 227 "ECHOCTL", /* 0001000 */ 228 "ECHOPRT", /* 0002000 */ 229 "ECHOKE", /* 0004000 */ 230 "FLUSHO", /* 0010000 */ 231 "unknown", /* 0020000 */ 232 "PENDIN", /* 0040000 */ 233 "IEXTEN", /* 0100000 */ 234 "unknown", /* 0200000 */ 235 "unknown", /* 0400000 */ 236 "unknown", /* 1000000 */ 237 "unknown", /* 2000000 */ 238 "unknown", /* 4000000 */ 222 "ECHOKE", /* 0x00000001 */ 223 "ECHOE", /* 0x00000002 */ 224 "ECHOK", /* 0x00000004 */ 225 "ECHO", /* 0x00000008 */ 226 "ECHONL", /* 0x00000010 */ 227 "ECHOPRT", /* 0x00000020 */ 228 "ECHOCTL", /* 0x00000040 */ 229 "ISIG", /* 0x00000080 */ 230 "ICANON", /* 0x00000100 */ 231 "ALTWERASE", /* 0x00000200 */ 232 "IEXTEN", /* 0x00000400 */ 233 "EXTPROC", /* 0x00000800 */ 234 "XCASE", /* 0x00001000 */ 235 "unknown", /* 0x00002000 */ 236 "unknown", /* 0x00004000 */ 237 "unknown", /* 0x00008000 */ 238 "unknown", /* 0x00010000 */ 239 "unknown", /* 0x00020000 */ 240 "unknown", /* 0x00040000 */ 241 "unknown", /* 0x00080000 */ 242 "unknown", /* 0x00100000 */ 243 "unknown", /* 0x00200000 */ 244 "TOSTOP", /* 0x00400000 */ 245 "FLUSHO", /* 0x00800000 */ 246 "unknown", /* 0x01000000 */ 247 "NOKERNINFO", /* 0x02000000 */ 248 "unknown", /* 0x04000000 */ 249 "unknown", /* 0x08000000 */ 250 "unknown", /* 0x10000000 */ 251 "PENDIN", /* 0x20000000 */ 252 "unknown", /* 0x40000000 */ 253 "NOFLSH", /* 0x80000000 */ 239 254 }; 240 255 … … 247 262 void print_c_cflag( struct termios * tp ) 248 263 { 249 unsigned int baud;250 251 264 printf( "c_cflag = 0x%08x\n", tp->c_cflag ); 252 253 baud = (tp->c_cflag & CBAUD) ;254 if ( tp->c_cflag & CBAUDEX )255 switch( baud ) {256 case B0:257 printf( "\tCBAUD =\tB0\n" );258 break;259 260 case B50:261 printf( "\tCBAUD =\tB50\n" );262 break;263 264 case B75:265 printf( "\tCBAUD =\tB75\n" );266 break;267 268 case B110:269 printf( "\tCBAUD =\tB110\n" );270 break;271 272 case B134:273 printf( "\tCBAUD =\tB134\n" );274 break;275 276 case B150:277 printf( "\tCBAUD =\tB150\n" );278 break;279 280 case B200:281 printf( "\tCBAUD =\tB200\n" );282 break;283 284 case B300:285 printf( "\tCBAUD =\tB300\n" );286 break;287 288 case B600:289 printf( "\tCBAUD =\tB600\n" );290 break;291 292 case B1200:293 printf( "\tCBAUD =\tB1200\n" );294 break;295 296 case B1800:297 printf( "\tCBAUD =\tB1800\n" );298 break;299 300 case B2400:301 printf( "\tCBAUD =\tB2400\n" );302 break;303 304 case B4800:305 printf( "\tCBAUD =\tB4800\n" );306 break;307 308 case B9600:309 printf( "\tCBAUD =\tB9600\n" );310 break;311 312 case B19200:313 printf( "\tCBAUD =\tB19200\n" );314 break;315 316 case B38400:317 printf( "\tCBAUD =\tB38400\n" );318 break;319 320 case B57600:321 printf( "\tCBAUD =\tB57600\n" );322 break;323 324 case B115200:325 printf( "\tCBAUD =\tB115200\n" );326 break;327 328 case B230400:329 printf( "\tCBAUD =\tB230400\n" );330 break;331 332 case B460800:333 printf( "\tCBAUD =\tB460800\n" );334 break;335 336 default:337 printf( "\tCBAUD =\tunknown (0x%08x)\n", baud );338 break;339 }340 265 341 266 switch( tp->c_cflag & CSIZE ) { … … 357 282 } 358 283 284 if( tp->c_cflag & CIGNORE ) 285 printf( "\tCIGNORE set: iqnore c_cflags enabled\n" ); 286 else 287 printf( "\tCIGNORE clear: iqnore c_cflags disabled\n" ); 288 359 289 if( tp->c_cflag & CSTOPB ) 360 290 printf( "\tCSTOPB set: send 2 stop bits\n" ); … … 387 317 printf( "\tCLOCAL clear: don't ignore modem lines\n" ); 388 318 389 #if defined(CBAUDEX) 390 if( tp->c_cflag & CBAUDEX ) 391 printf( "\tCBAUDEX set: What does this do?\n" ); 392 else 393 printf( "\tCBAUDEX clear: What does this do?\n" ); 394 #endif 319 if( tp->c_cflag & CCTS_OFLOW ) 320 printf( "\tCCTS_OFLOW: hardware CTS output flow control enabled\n" ); 321 else 322 printf( "\tCCTS_OFLOW: hardware CTS output flow control disabled\n" ); 323 324 if( tp->c_cflag & CRTS_IFLOW ) 325 printf( "\tCRTS_IFLOW: hardware RTS input flow control enabled\n" ); 326 else 327 printf( "\tCRTS_IFLOW: hardware RTS input flow control disabled\n" ); 395 328 396 329 if( tp->c_cflag & CRTSCTS ) … … 398 331 else 399 332 printf( "\tCRTSCTS: hardware flow control disabled?\n" ); 333 334 if( tp->c_cflag & CDSR_OFLOW ) 335 printf( "\tCDSR_OFLOW: hardware DSR output flow control enabled\n" ); 336 else 337 printf( "\tCDSR_OFLOW: hardware DSR output flow control disabled\n" ); 338 339 if( tp->c_cflag & CDTR_IFLOW ) 340 printf( "\tCDTR_IFLOW: hardware DTR input flow control enabled\n" ); 341 else 342 printf( "\tCDTR_IFLOW: hardware DTR input flow control disabled\n" ); 343 344 if( tp->c_cflag & CCAR_OFLOW ) 345 printf( "\tCCAR_OFLOW: hardware CD output flow control enabled\n" ); 346 else 347 printf( "\tCCAR_OFLOW: hardware CD output flow control disabled\n" ); 400 348 } 401 349 … … 405 353 size_t i; 406 354 char * cc_index_names [ /* NCCS */ ] = { 407 "[V INTR]", /* 0 */408 "[V QUIT]", /* 1 */409 "[VE RASE]", /* 2 */410 "[V KILL]", /* 3 */411 "[V EOF]", /* 4 */412 "[V TIME] ", /* 5 */413 "[V MIN]", /* 6 */414 "[V SWTC", /* 7 */415 "[V START]", /* 8 */416 "[V STOP] ", /* 9 */355 "[VEOF] ", /* 0 */ 356 "[VEOL] ", /* 1 */ 357 "[VEOL2] ", /* 2 */ 358 "[VERASE] ", /* 3 */ 359 "[VWERASE] ", /* 4 */ 360 "[VKILL] ", /* 5 */ 361 "[VREPRINT]", /* 6 */ 362 "[VERASE2] ", /* 7 */ 363 "[VINTR] ", /* 8 */ 364 "[VQUIT] ", /* 9 */ 417 365 "[VSUSP] ", /* 10 */ 418 "[VEOL] ", /* 11 */ 419 "[VREPRINT]", /* 12 */ 420 "[VDISCARD]", /* 13 */ 421 "[VWERASE] ", /* 14 */ 422 "[VLNEXT ", /* 15 */ 423 "[VEOL2] ", /* 16 */ 424 "unknown ", /* 17 */ 425 "unknown ", /* 18 */ 366 "[VDSUSP] ", /* 11 */ 367 "[VSTART] ", /* 12 */ 368 "[VSTOP] ", /* 13 */ 369 "[VLNEXT] ", /* 14 */ 370 "[VDISCARD]", /* 15 */ 371 "[VMIN] ", /* 16 */ 372 "[VTIME] ", /* 17 */ 373 "[VSTATUS] ", /* 18 */ 374 "unknown ", /* 19 */ 426 375 }; 427 376 428 377 for( i = 0; i < sizeof(cc_index_names)/sizeof(char*) ; i++ ) { 429 378 printf( "c_cc%s = 0x%08x\n", cc_index_names[i], tp->c_cc[i] ); 379 } 380 } 381 382 383 void print_baud( const char* name, speed_t spd ) 384 { 385 switch( spd ) { 386 case B0: 387 printf( "%s = B0\n", name ); 388 break; 389 390 case B50: 391 printf( "%s = B50\n", name ); 392 break; 393 394 case B75: 395 printf( "%s = B75\n", name ); 396 break; 397 398 case B110: 399 printf( "%s = B110\n", name ); 400 break; 401 402 case B134: 403 printf( "%s = B134\n", name ); 404 break; 405 406 case B150: 407 printf( "%s = B150\n", name ); 408 break; 409 410 case B200: 411 printf( "%s = B200\n", name ); 412 break; 413 414 case B300: 415 printf( "%s = B300\n", name ); 416 break; 417 418 case B600: 419 printf( "%s = B600\n", name ); 420 break; 421 422 case B1200: 423 printf( "%s = B1200\n", name ); 424 break; 425 426 case B1800: 427 printf( "%s = B1800\n", name ); 428 break; 429 430 case B2400: 431 printf( "%s = B2400\n", name ); 432 break; 433 434 case B4800: 435 printf( "%s = B4800\n", name ); 436 break; 437 438 case B9600: 439 printf( "%s = B9600\n", name ); 440 break; 441 442 case B19200: 443 printf( "%s = B19200\n", name ); 444 break; 445 446 case B38400: 447 printf( "%s = B38400\n", name ); 448 break; 449 450 case B7200: 451 printf( "%s = B7200\n", name ); 452 break; 453 454 case B14400: 455 printf( "%s = B14400\n", name ); 456 break; 457 458 case B28800: 459 printf( "%s = B28800\n", name ); 460 break; 461 462 case B57600: 463 printf( "%s = B57600\n", name ); 464 break; 465 466 case B76800: 467 printf( "%s = B76800\n", name ); 468 break; 469 470 case B115200: 471 printf( "%s = B115200\n", name ); 472 break; 473 474 case B230400: 475 printf( "%s = B230400\n", name ); 476 break; 477 478 case B460800: 479 printf( "%s = B460800\n", name ); 480 break; 481 482 case B921600: 483 printf( "%s = B921600\n", name ); 484 break; 485 486 default: 487 printf( "%s = unknown (0x%08x)\n", name, (unsigned int)spd ); 488 break; 430 489 } 431 490 } … … 440 499 print_c_lflag( tp ); 441 500 print_c_cc( tp ); 501 print_baud( "c_ispeed", tp->c_ispeed ); 502 print_baud( "c_ospeed", tp->c_ospeed ); 442 503 printf( "\n" ); 443 504 } … … 451 512 printf( "Enter the numerical value for the new baud rate.\n" ); 452 513 printf( "Choices are: 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800\n" ); 453 printf( "2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800\n" ); 514 printf( "2400, 4800, 9600, 19200, 38400, 7200, 14400, 28800, 57600, 76800\n" ); 515 printf( "115200, 230400, 460800, 921600\n" ); 454 516 printf( "\nYour choice: " ); 455 517 scanf( "%lu", &baud_rate ); … … 471 533 case 19200: return B19200; 472 534 case 38400: return B38400; 535 case 7200: return B7200; 536 case 14400: return B14400; 537 case 28800: return B28800; 473 538 case 57600: return B57600; 539 case 76800: return B76800; 474 540 case 115200: return B115200; 475 541 case 230400: return B230400; 476 542 case 460800: return B460800; 543 case 921600: return B921600; 477 544 478 545 default: … … 590 657 sleep( sleep_time ); 591 658 592 tp->c_cflag = CLOCAL | CREAD | parity | stop_bits | data_bits | baud_rate; 659 tp->c_cflag = CLOCAL | CREAD | parity | stop_bits | data_bits; 660 tp->c_ispeed = baud_rate; 661 tp->c_ospeed = baud_rate; 593 662 if( tcsetattr( fileno( stdin ), TCSADRAIN, tp ) < 0 ) { 594 663 perror( "change_line_settings(): tcsetattr() failed" ); -
testsuites/libtests/termios01/init.c
rc4b058ca r1c6926c1 13 13 14 14 #include "tmacros.h" 15 #define TTYDEFCHARS 15 16 #include <termios.h> 16 17 #include <rtems/libcsupport.h> … … 67 68 { B19200, 19200 }, 68 69 { B38400, 38400 }, 70 { B7200, 7200 }, 71 { B14400, 14400 }, 72 { B28800, 28800 }, 69 73 { B57600, 57600 }, 74 { B76800, 76800 }, 70 75 { B115200, 115200 }, 71 76 { B230400, 230400 }, 72 77 { B460800, 460800 }, 78 { B921600, 921600 }, 73 79 { INVALID_CONSTANT, INVALID_BAUD } 74 80 }; … … 234 240 puts( "Test termios setting device baud rate..." ); 235 241 for (i=0 ; baud_table[i].constant != INVALID_CONSTANT ; i++ ) { 236 tcflag_t cbaud = CBAUD;237 238 242 sc = tcgetattr( test, &attr ); 239 243 if ( sc != 0 ) { … … 242 246 } 243 247 244 attr.c_ cflag &= ~cbaud;245 attr.c_ cflag |= baud_table[i].constant;248 attr.c_ispeed = baud_table[i].constant; 249 attr.c_ospeed = baud_table[i].constant; 246 250 247 251 printf( … … 259 263 baud_table[i].baud 260 264 ); 261 sc = tcsetattr( test, TCSANOW, &attr ); 265 sc = tcsetattr( test, TCSADRAIN, &attr ); 266 if ( sc != 0 ) { 267 printf( "ERROR - return %d\n", sc ); 268 rtems_test_exit(0); 269 } 270 271 printf( 272 "tcsetattr(TCSAFLUSH, B%" PRIdrtems_termios_baud_t ") - OK\n", 273 baud_table[i].baud 274 ); 275 sc = tcsetattr( test, TCSAFLUSH, &attr ); 262 276 if ( sc != 0 ) { 263 277 printf( "ERROR - return %d\n", sc ); … … 302 316 303 317 printf( "tcsetattr(TCSADRAIN, CS%d) - OK\n", char_size_table[i].bits ); 304 sc = tcsetattr( test, TCSANOW, &attr ); 318 sc = tcsetattr( test, TCSADRAIN, &attr ); 319 if ( sc != 0 ) { 320 printf( "ERROR - return %d\n", sc ); 321 rtems_test_exit(0); 322 } 323 324 printf( "tcsetattr(TCSAFLUSH, CS%d) - OK\n", char_size_table[i].bits ); 325 sc = tcsetattr( test, TCSAFLUSH, &attr ); 326 if ( sc != 0 ) { 327 printf( "ERROR - return %d\n", sc ); 328 rtems_test_exit(0); 329 } 330 331 printf( "tcsetattr(TCSASOFT, CS%d) - OK\n", char_size_table[i].bits ); 332 sc = tcsetattr( test, TCSASOFT, &attr ); 305 333 if ( sc != 0 ) { 306 334 printf( "ERROR - return %d\n", sc ); … … 345 373 346 374 printf( "tcsetattr(TCSADRAIN, %s) - OK\n", parity_table[i].parity ); 347 sc = tcsetattr( test, TCSANOW, &attr ); 375 sc = tcsetattr( test, TCSADRAIN, &attr ); 376 if ( sc != 0 ) { 377 printf( "ERROR - return %d\n", sc ); 378 rtems_test_exit(0); 379 } 380 381 printf( "tcsetattr(TCSAFLUSH, %s) - OK\n", parity_table[i].parity ); 382 sc = tcsetattr( test, TCSAFLUSH, &attr ); 383 if ( sc != 0 ) { 384 printf( "ERROR - return %d\n", sc ); 385 rtems_test_exit(0); 386 } 387 388 printf( "tcsetattr(TCSASOFT, %s) - OK\n", parity_table[i].parity ); 389 sc = tcsetattr( test, TCSASOFT, &attr ); 348 390 if ( sc != 0 ) { 349 391 printf( "ERROR - return %d\n", sc ); … … 391 433 392 434 printf( "tcsetattr(TCSADRAIN, %d bits) - OK\n", stop_bits_table[i].stop ); 393 sc = tcsetattr( test, TCSANOW, &attr ); 435 sc = tcsetattr( test, TCSADRAIN, &attr ); 436 if ( sc != 0 ) { 437 printf( "ERROR - return %d\n", sc ); 438 rtems_test_exit(0); 439 } 440 441 printf( "tcsetattr(TCSAFLUSH, %d bits) - OK\n", stop_bits_table[i].stop ); 442 sc = tcsetattr( test, TCSAFLUSH, &attr ); 443 if ( sc != 0 ) { 444 printf( "ERROR - return %d\n", sc ); 445 rtems_test_exit(0); 446 } 447 448 printf( "tcsetattr(TCSASOFT, %d bits) - OK\n", stop_bits_table[i].stop ); 449 sc = tcsetattr( test, TCSASOFT, &attr ); 394 450 if ( sc != 0 ) { 395 451 printf( "ERROR - return %d\n", sc ); … … 405 461 speed_t speed; 406 462 struct termios term; 407 tcflag_tbad;408 409 bad = CBAUD<< 1;463 speed_t bad; 464 465 bad = B921600 << 1; 410 466 memset( &term, '\0', sizeof(term) ); 411 467 puts( "cfsetospeed(BAD BAUD) - EINVAL" ); … … 437 493 speed_t speed; 438 494 struct termios term; 439 tcflag_tbad;440 441 bad = CBAUD<< 1;495 speed_t bad; 496 497 bad = B921600 << 1; 442 498 memset( &term, '\0', sizeof(term) ); 443 499 puts( "cfsetispeed(BAD BAUD) - EINVAL" ); … … 470 526 speed_t speed; 471 527 struct termios term; 472 tcflag_tbad;473 474 bad = CBAUD<< 1;528 speed_t bad; 529 530 bad = B921600 << 1; 475 531 memset( &term, '\0', sizeof(term) ); 476 532 puts( "cfsetspeed(BAD BAUD) - EINVAL" ); … … 509 565 510 566 /* Check that all of the flags were set correctly */ 511 rtems_test_assert( ~(term.c_iflag & (IMAXBEL|IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON)) ); 567 rtems_test_assert( ~(term.c_iflag & (IMAXBEL|IXOFF|INPCK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IGNPAR)) ); 568 569 rtems_test_assert( term.c_iflag & (IGNBRK) ); 512 570 513 571 rtems_test_assert( ~(term.c_oflag & OPOST) ); 514 572 515 rtems_test_assert( ~(term.c_lflag & (ECHO|ECHO NL|ICANON|ISIG|IEXTEN)) );573 rtems_test_assert( ~(term.c_lflag & (ECHO|ECHOE|ECHOK|ECHONL|ICANON|ISIG|IEXTEN|NOFLSH|TOSTOP|PENDIN)) ); 516 574 517 575 rtems_test_assert( ~(term.c_cflag & (CSIZE|PARENB)) ); 518 576 519 rtems_test_assert( term.c_cflag & CS8 ); 577 rtems_test_assert( term.c_cflag & (CS8|CREAD) ); 578 579 rtems_test_assert( term.c_cc[VMIN] == 1 ); 580 581 rtems_test_assert( term.c_cc[VTIME] == 0 ); 582 } 583 584 static void test_termios_cfmakesane(void) 585 { 586 struct termios term; 587 588 memset( &term, '\0', sizeof(term) ); 589 cfmakesane( &term ); 590 puts( "cfmakesane - OK" ); 591 592 /* Check that all of the flags were set correctly */ 593 rtems_test_assert( term.c_iflag == TTYDEF_IFLAG ); 594 595 rtems_test_assert( term.c_oflag == TTYDEF_OFLAG ); 596 597 rtems_test_assert( term.c_lflag == TTYDEF_LFLAG ); 598 599 rtems_test_assert( term.c_cflag == TTYDEF_CFLAG ); 600 601 rtems_test_assert( term.c_ispeed == TTYDEF_SPEED ); 602 603 rtems_test_assert( term.c_ospeed == TTYDEF_SPEED ); 604 605 rtems_test_assert( memcmp(&term.c_cc, ttydefchars, sizeof(term.c_cc)) == 0 ); 520 606 } 521 607 … … 685 771 rtems_test_assert( !ctx.done ); 686 772 errno = 0; 687 rv = ioctl( fd, RTEMS_IO_SET_ATTRIBUTES, &term );773 rv = ioctl( fd, TIOCSETA, &term ); 688 774 rtems_test_assert( rv == -1 ); 689 775 rtems_test_assert( errno == EIO ); … … 703 789 static const struct { 704 790 uint32_t baud; 705 tcflag_t cflag;706 } baud_to_ cflag_table[] = {791 speed_t speed; 792 } baud_to_speed_table[] = { 707 793 { 0, B0 }, 708 794 { 25, B0 }, … … 732 818 }; 733 819 734 size_t n = RTEMS_ARRAY_SIZE(baud_to_ cflag_table);820 size_t n = RTEMS_ARRAY_SIZE(baud_to_speed_table); 735 821 size_t i; 736 822 737 823 for ( i = 0; i < n; ++i ) { 738 824 struct termios term; 739 tcflag_t cbaud_mask = CBAUD;740 825 741 826 memset( &term, 0xff, sizeof( term ) ); 742 rtems_termios_set_best_baud( &term, baud_to_cflag_table[ i ].baud ); 743 744 rtems_test_assert( 745 (term.c_cflag & cbaud_mask) == baud_to_cflag_table[ i ].cflag 746 ); 827 rtems_termios_set_best_baud( &term, baud_to_speed_table[ i ].baud ); 828 829 rtems_test_assert( term.c_ispeed == baud_to_speed_table[ i ].speed ); 830 rtems_test_assert( term.c_ospeed == baud_to_speed_table[ i ].speed ); 747 831 } 748 832 } … … 792 876 * tcsetattr - ERROR invalid operation 793 877 */ 794 puts( "tcsetattr - invalid operation - E NOTSUP" );878 puts( "tcsetattr - invalid operation - EINVAL" ); 795 879 rc = tcsetattr( test, INT_MAX, &t ); 796 880 rtems_test_assert( rc == -1 ); 797 rtems_test_assert( errno == E NOTSUP);881 rtems_test_assert( errno == EINVAL ); 798 882 799 883 test_termios_cfmakeraw(); 800 884 test_termios_cfmakesane(); 885 801 886 /* 802 887 * tcsetattr - TCSADRAIN -
testsuites/libtests/termios01/termios01.scn
rc4b058ca r1c6926c1 1 *** TEST TERMIOS 01 ***1 *** BEGIN OF TEST TERMIOS 1 *** 2 2 Test termios_baud2index... 3 3 termios_baud_to_index(-2) - NOT OK … … 18 18 termios_baud_to_index(B19200) - OK 19 19 termios_baud_to_index(B38400) - OK 20 termios_baud_to_index(B7200) - OK 21 termios_baud_to_index(B14400) - OK 22 termios_baud_to_index(B28800) - OK 20 23 termios_baud_to_index(B57600) - OK 24 termios_baud_to_index(B76800) - OK 21 25 termios_baud_to_index(B115200) - OK 22 26 termios_baud_to_index(B230400) - OK 23 27 termios_baud_to_index(B460800) - OK 28 termios_baud_to_index(B921600) - OK 24 29 25 30 Test termios_baud2number... … … 41 46 termios_baud_to_number(B19200) - OK 42 47 termios_baud_to_number(B38400) - OK 48 termios_baud_to_number(B7200) - OK 49 termios_baud_to_number(B14400) - OK 50 termios_baud_to_number(B28800) - OK 43 51 termios_baud_to_number(B57600) - OK 52 termios_baud_to_number(B76800) - OK 44 53 termios_baud_to_number(B115200) - OK 45 54 termios_baud_to_number(B230400) - OK 46 55 termios_baud_to_number(B460800) - OK 56 termios_baud_to_number(B921600) - OK 47 57 48 58 Test termios_number_to_baud... … … 64 74 termios_number_to_baud(B19200) - OK 65 75 termios_number_to_baud(B38400) - OK 76 termios_number_to_baud(B7200) - OK 77 termios_number_to_baud(B14400) - OK 78 termios_number_to_baud(B28800) - OK 66 79 termios_number_to_baud(B57600) - OK 80 termios_number_to_baud(B76800) - OK 67 81 termios_number_to_baud(B115200) - OK 68 82 termios_number_to_baud(B230400) - OK 69 83 termios_number_to_baud(B460800) - OK 84 termios_number_to_baud(B921600) - OK 70 85 71 86 Init - rtems_io_register_driver - Termios Test Driver - OK 72 87 Termios_test_driver - rtems_io_register /dev/test - OK 73 Init - Major slot returned = 288 Init - Major slot returned = 3 74 89 Init - open - /dev/test - OK 75 90 Termios_test_driver - rtems_set_initial_baud - bad baud - OK 76 91 Termios_test_driver - rtems_set_initial_baud - 38400 - OK 77 tcsetattr - invalid operation - E NOTSUP92 tcsetattr - invalid operation - EINVAL 78 93 cfmakeraw - OK 94 cfmakesane - OK 79 95 80 96 tcsetattr - drain - OK 81 set_attributes - B0 5-NONE-197 set_attributes - B0 8-NONE-2 82 98 Test termios setting device baud rate... 83 99 tcsetattr(TCSANOW, B0) - OK 84 set_attributes - B0 5-NONE-1100 set_attributes - B0 8-NONE-2 85 101 tcsetattr(TCSADRAIN, B0) - OK 86 set_attributes - B0 5-NONE-1 102 set_attributes - B0 8-NONE-2 103 tcsetattr(TCSAFLUSH, B0) - OK 104 set_attributes - B0 8-NONE-2 87 105 tcsetattr(TCSANOW, B50) - OK 88 set_attributes - B50 5-NONE-1106 set_attributes - B50 8-NONE-2 89 107 tcsetattr(TCSADRAIN, B50) - OK 90 set_attributes - B50 5-NONE-1 108 set_attributes - B50 8-NONE-2 109 tcsetattr(TCSAFLUSH, B50) - OK 110 set_attributes - B50 8-NONE-2 91 111 tcsetattr(TCSANOW, B75) - OK 92 set_attributes - B75 5-NONE-1112 set_attributes - B75 8-NONE-2 93 113 tcsetattr(TCSADRAIN, B75) - OK 94 set_attributes - B75 5-NONE-1 114 set_attributes - B75 8-NONE-2 115 tcsetattr(TCSAFLUSH, B75) - OK 116 set_attributes - B75 8-NONE-2 95 117 tcsetattr(TCSANOW, B110) - OK 96 set_attributes - B110 5-NONE-1118 set_attributes - B110 8-NONE-2 97 119 tcsetattr(TCSADRAIN, B110) - OK 98 set_attributes - B110 5-NONE-1 120 set_attributes - B110 8-NONE-2 121 tcsetattr(TCSAFLUSH, B110) - OK 122 set_attributes - B110 8-NONE-2 99 123 tcsetattr(TCSANOW, B134) - OK 100 set_attributes - B134 5-NONE-1124 set_attributes - B134 8-NONE-2 101 125 tcsetattr(TCSADRAIN, B134) - OK 102 set_attributes - B134 5-NONE-1 126 set_attributes - B134 8-NONE-2 127 tcsetattr(TCSAFLUSH, B134) - OK 128 set_attributes - B134 8-NONE-2 103 129 tcsetattr(TCSANOW, B150) - OK 104 set_attributes - B150 5-NONE-1130 set_attributes - B150 8-NONE-2 105 131 tcsetattr(TCSADRAIN, B150) - OK 106 set_attributes - B150 5-NONE-1 132 set_attributes - B150 8-NONE-2 133 tcsetattr(TCSAFLUSH, B150) - OK 134 set_attributes - B150 8-NONE-2 107 135 tcsetattr(TCSANOW, B200) - OK 108 set_attributes - B200 5-NONE-1136 set_attributes - B200 8-NONE-2 109 137 tcsetattr(TCSADRAIN, B200) - OK 110 set_attributes - B200 5-NONE-1 138 set_attributes - B200 8-NONE-2 139 tcsetattr(TCSAFLUSH, B200) - OK 140 set_attributes - B200 8-NONE-2 111 141 tcsetattr(TCSANOW, B300) - OK 112 set_attributes - B300 5-NONE-1142 set_attributes - B300 8-NONE-2 113 143 tcsetattr(TCSADRAIN, B300) - OK 114 set_attributes - B300 5-NONE-1 144 set_attributes - B300 8-NONE-2 145 tcsetattr(TCSAFLUSH, B300) - OK 146 set_attributes - B300 8-NONE-2 115 147 tcsetattr(TCSANOW, B600) - OK 116 set_attributes - B600 5-NONE-1148 set_attributes - B600 8-NONE-2 117 149 tcsetattr(TCSADRAIN, B600) - OK 118 set_attributes - B600 5-NONE-1 150 set_attributes - B600 8-NONE-2 151 tcsetattr(TCSAFLUSH, B600) - OK 152 set_attributes - B600 8-NONE-2 119 153 tcsetattr(TCSANOW, B1200) - OK 120 set_attributes - B1200 5-NONE-1154 set_attributes - B1200 8-NONE-2 121 155 tcsetattr(TCSADRAIN, B1200) - OK 122 set_attributes - B1200 5-NONE-1 156 set_attributes - B1200 8-NONE-2 157 tcsetattr(TCSAFLUSH, B1200) - OK 158 set_attributes - B1200 8-NONE-2 123 159 tcsetattr(TCSANOW, B1800) - OK 124 set_attributes - B1800 5-NONE-1160 set_attributes - B1800 8-NONE-2 125 161 tcsetattr(TCSADRAIN, B1800) - OK 126 set_attributes - B1800 5-NONE-1 162 set_attributes - B1800 8-NONE-2 163 tcsetattr(TCSAFLUSH, B1800) - OK 164 set_attributes - B1800 8-NONE-2 127 165 tcsetattr(TCSANOW, B2400) - OK 128 set_attributes - B2400 5-NONE-1166 set_attributes - B2400 8-NONE-2 129 167 tcsetattr(TCSADRAIN, B2400) - OK 130 set_attributes - B2400 5-NONE-1 168 set_attributes - B2400 8-NONE-2 169 tcsetattr(TCSAFLUSH, B2400) - OK 170 set_attributes - B2400 8-NONE-2 131 171 tcsetattr(TCSANOW, B4800) - OK 132 set_attributes - B4800 5-NONE-1172 set_attributes - B4800 8-NONE-2 133 173 tcsetattr(TCSADRAIN, B4800) - OK 134 set_attributes - B4800 5-NONE-1 174 set_attributes - B4800 8-NONE-2 175 tcsetattr(TCSAFLUSH, B4800) - OK 176 set_attributes - B4800 8-NONE-2 135 177 tcsetattr(TCSANOW, B9600) - OK 136 set_attributes - B9600 5-NONE-1178 set_attributes - B9600 8-NONE-2 137 179 tcsetattr(TCSADRAIN, B9600) - OK 138 set_attributes - B9600 5-NONE-1 180 set_attributes - B9600 8-NONE-2 181 tcsetattr(TCSAFLUSH, B9600) - OK 182 set_attributes - B9600 8-NONE-2 139 183 tcsetattr(TCSANOW, B19200) - OK 140 set_attributes - B19200 5-NONE-1184 set_attributes - B19200 8-NONE-2 141 185 tcsetattr(TCSADRAIN, B19200) - OK 142 set_attributes - B19200 5-NONE-1 186 set_attributes - B19200 8-NONE-2 187 tcsetattr(TCSAFLUSH, B19200) - OK 188 set_attributes - B19200 8-NONE-2 143 189 tcsetattr(TCSANOW, B38400) - OK 144 set_attributes - B38400 5-NONE-1190 set_attributes - B38400 8-NONE-2 145 191 tcsetattr(TCSADRAIN, B38400) - OK 146 set_attributes - B38400 5-NONE-1 192 set_attributes - B38400 8-NONE-2 193 tcsetattr(TCSAFLUSH, B38400) - OK 194 set_attributes - B38400 8-NONE-2 195 tcsetattr(TCSANOW, B7200) - OK 196 set_attributes - B7200 8-NONE-2 197 tcsetattr(TCSADRAIN, B7200) - OK 198 set_attributes - B7200 8-NONE-2 199 tcsetattr(TCSAFLUSH, B7200) - OK 200 set_attributes - B7200 8-NONE-2 201 tcsetattr(TCSANOW, B14400) - OK 202 set_attributes - B14400 8-NONE-2 203 tcsetattr(TCSADRAIN, B14400) - OK 204 set_attributes - B14400 8-NONE-2 205 tcsetattr(TCSAFLUSH, B14400) - OK 206 set_attributes - B14400 8-NONE-2 207 tcsetattr(TCSANOW, B28800) - OK 208 set_attributes - B28800 8-NONE-2 209 tcsetattr(TCSADRAIN, B28800) - OK 210 set_attributes - B28800 8-NONE-2 211 tcsetattr(TCSAFLUSH, B28800) - OK 212 set_attributes - B28800 8-NONE-2 147 213 tcsetattr(TCSANOW, B57600) - OK 148 set_attributes - B57600 5-NONE-1214 set_attributes - B57600 8-NONE-2 149 215 tcsetattr(TCSADRAIN, B57600) - OK 150 set_attributes - B57600 5-NONE-1 216 set_attributes - B57600 8-NONE-2 217 tcsetattr(TCSAFLUSH, B57600) - OK 218 set_attributes - B57600 8-NONE-2 219 tcsetattr(TCSANOW, B76800) - OK 220 set_attributes - B76800 8-NONE-2 221 tcsetattr(TCSADRAIN, B76800) - OK 222 set_attributes - B76800 8-NONE-2 223 tcsetattr(TCSAFLUSH, B76800) - OK 224 set_attributes - B76800 8-NONE-2 151 225 tcsetattr(TCSANOW, B115200) - OK 152 set_attributes - B115200 5-NONE-1226 set_attributes - B115200 8-NONE-2 153 227 tcsetattr(TCSADRAIN, B115200) - OK 154 set_attributes - B115200 5-NONE-1 228 set_attributes - B115200 8-NONE-2 229 tcsetattr(TCSAFLUSH, B115200) - OK 230 set_attributes - B115200 8-NONE-2 155 231 tcsetattr(TCSANOW, B230400) - OK 156 set_attributes - B230400 5-NONE-1232 set_attributes - B230400 8-NONE-2 157 233 tcsetattr(TCSADRAIN, B230400) - OK 158 set_attributes - B230400 5-NONE-1 234 set_attributes - B230400 8-NONE-2 235 tcsetattr(TCSAFLUSH, B230400) - OK 236 set_attributes - B230400 8-NONE-2 159 237 tcsetattr(TCSANOW, B460800) - OK 160 set_attributes - B460800 5-NONE-1238 set_attributes - B460800 8-NONE-2 161 239 tcsetattr(TCSADRAIN, B460800) - OK 162 set_attributes - B460800 5-NONE-1 240 set_attributes - B460800 8-NONE-2 241 tcsetattr(TCSAFLUSH, B460800) - OK 242 set_attributes - B460800 8-NONE-2 243 tcsetattr(TCSANOW, B921600) - OK 244 set_attributes - B921600 8-NONE-2 245 tcsetattr(TCSADRAIN, B921600) - OK 246 set_attributes - B921600 8-NONE-2 247 tcsetattr(TCSAFLUSH, B921600) - OK 248 set_attributes - B921600 8-NONE-2 163 249 Init - close - /dev/test - OK 164 250 … … 169 255 Test termios setting device character size ... 170 256 tcsetattr(TCSANOW, CS5) - OK 171 set_attributes - B38400 5-NONE- 1257 set_attributes - B38400 5-NONE-2 172 258 tcsetattr(TCSADRAIN, CS5) - OK 173 set_attributes - B38400 5-NONE-1 259 set_attributes - B38400 5-NONE-2 260 tcsetattr(TCSAFLUSH, CS5) - OK 261 set_attributes - B38400 5-NONE-2 262 tcsetattr(TCSASOFT, CS5) - OK 263 set_attributes - B38400 5-NONE-2 174 264 tcsetattr(TCSANOW, CS6) - OK 175 set_attributes - B38400 6-NONE- 1265 set_attributes - B38400 6-NONE-2 176 266 tcsetattr(TCSADRAIN, CS6) - OK 177 set_attributes - B38400 6-NONE-1 267 set_attributes - B38400 6-NONE-2 268 tcsetattr(TCSAFLUSH, CS6) - OK 269 set_attributes - B38400 6-NONE-2 270 tcsetattr(TCSASOFT, CS6) - OK 271 set_attributes - B38400 6-NONE-2 178 272 tcsetattr(TCSANOW, CS7) - OK 179 set_attributes - B38400 7-NONE- 1273 set_attributes - B38400 7-NONE-2 180 274 tcsetattr(TCSADRAIN, CS7) - OK 181 set_attributes - B38400 7-NONE-1 275 set_attributes - B38400 7-NONE-2 276 tcsetattr(TCSAFLUSH, CS7) - OK 277 set_attributes - B38400 7-NONE-2 278 tcsetattr(TCSASOFT, CS7) - OK 279 set_attributes - B38400 7-NONE-2 182 280 tcsetattr(TCSANOW, CS8) - OK 183 set_attributes - B38400 8-NONE- 1281 set_attributes - B38400 8-NONE-2 184 282 tcsetattr(TCSADRAIN, CS8) - OK 185 set_attributes - B38400 8-NONE-1 283 set_attributes - B38400 8-NONE-2 284 tcsetattr(TCSAFLUSH, CS8) - OK 285 set_attributes - B38400 8-NONE-2 286 tcsetattr(TCSASOFT, CS8) - OK 287 set_attributes - B38400 8-NONE-2 186 288 Init - close - /dev/test - OK 187 289 … … 192 294 Test termios setting device parity ... 193 295 tcsetattr(TCSANOW, none) - OK 194 set_attributes - B38400 8-NONE- 1296 set_attributes - B38400 8-NONE-2 195 297 tcsetattr(TCSADRAIN, none) - OK 196 set_attributes - B38400 8-NONE-1 298 set_attributes - B38400 8-NONE-2 299 tcsetattr(TCSAFLUSH, none) - OK 300 set_attributes - B38400 8-NONE-2 301 tcsetattr(TCSASOFT, none) - OK 302 set_attributes - B38400 8-NONE-2 197 303 tcsetattr(TCSANOW, even) - OK 198 set_attributes - B38400 8-ODD- 1304 set_attributes - B38400 8-ODD-2 199 305 tcsetattr(TCSADRAIN, even) - OK 200 set_attributes - B38400 8-ODD-1 306 set_attributes - B38400 8-ODD-2 307 tcsetattr(TCSAFLUSH, even) - OK 308 set_attributes - B38400 8-ODD-2 309 tcsetattr(TCSASOFT, even) - OK 310 set_attributes - B38400 8-ODD-2 201 311 tcsetattr(TCSANOW, odd) - OK 202 set_attributes - B38400 8-EVEN- 1312 set_attributes - B38400 8-EVEN-2 203 313 tcsetattr(TCSADRAIN, odd) - OK 204 set_attributes - B38400 8-EVEN-1 314 set_attributes - B38400 8-EVEN-2 315 tcsetattr(TCSAFLUSH, odd) - OK 316 set_attributes - B38400 8-EVEN-2 317 tcsetattr(TCSASOFT, odd) - OK 318 set_attributes - B38400 8-EVEN-2 205 319 Init - close - /dev/test - OK 206 320 … … 214 328 tcsetattr(TCSADRAIN, 1 bits) - OK 215 329 set_attributes - B38400 8-NONE-1 330 tcsetattr(TCSAFLUSH, 1 bits) - OK 331 set_attributes - B38400 8-NONE-1 332 tcsetattr(TCSASOFT, 1 bits) - OK 333 set_attributes - B38400 8-NONE-1 216 334 tcsetattr(TCSANOW, 2 bits) - OK 217 335 set_attributes - B38400 8-NONE-2 218 336 tcsetattr(TCSADRAIN, 2 bits) - OK 337 set_attributes - B38400 8-NONE-2 338 tcsetattr(TCSAFLUSH, 2 bits) - OK 339 set_attributes - B38400 8-NONE-2 340 tcsetattr(TCSASOFT, 2 bits) - OK 219 341 set_attributes - B38400 8-NONE-2 220 342 cfsetospeed(BAD BAUD) - EINVAL … … 251 373 cfsetospeed(B38400) - OK 252 374 cfgetospeed(B38400) - OK 375 cfsetospeed(B7200) - OK 376 cfgetospeed(B7200) - OK 377 cfsetospeed(B14400) - OK 378 cfgetospeed(B14400) - OK 379 cfsetospeed(B28800) - OK 380 cfgetospeed(B28800) - OK 253 381 cfsetospeed(B57600) - OK 254 382 cfgetospeed(B57600) - OK 383 cfsetospeed(B76800) - OK 384 cfgetospeed(B76800) - OK 255 385 cfsetospeed(B115200) - OK 256 386 cfgetospeed(B115200) - OK … … 259 389 cfsetospeed(B460800) - OK 260 390 cfgetospeed(B460800) - OK 391 cfsetospeed(B921600) - OK 392 cfgetospeed(B921600) - OK 261 393 cfsetispeed(BAD BAUD) - EINVAL 262 394 cfsetispeed(B0) - OK … … 292 424 cfsetispeed(B38400) - OK 293 425 cfgetispeed(B38400) - OK 426 cfsetispeed(B7200) - OK 427 cfgetispeed(B7200) - OK 428 cfsetispeed(B14400) - OK 429 cfgetispeed(B14400) - OK 430 cfsetispeed(B28800) - OK 431 cfgetispeed(B28800) - OK 294 432 cfsetispeed(B57600) - OK 295 433 cfgetispeed(B57600) - OK 434 cfsetispeed(B76800) - OK 435 cfgetispeed(B76800) - OK 296 436 cfsetispeed(B115200) - OK 297 437 cfgetispeed(B115200) - OK … … 300 440 cfsetispeed(B460800) - OK 301 441 cfgetispeed(B460800) - OK 442 cfsetispeed(B921600) - OK 443 cfgetispeed(B921600) - OK 302 444 cfsetspeed(BAD BAUD) - EINVAL 303 445 cfsetspeed(B0) - OK … … 333 475 cfsetspeed(B38400) - OK 334 476 cfgetspeed(B38400) - checking both inspeed and outspeed - OK 477 cfsetspeed(B7200) - OK 478 cfgetspeed(B7200) - checking both inspeed and outspeed - OK 479 cfsetspeed(B14400) - OK 480 cfgetspeed(B14400) - checking both inspeed and outspeed - OK 481 cfsetspeed(B28800) - OK 482 cfgetspeed(B28800) - checking both inspeed and outspeed - OK 335 483 cfsetspeed(B57600) - OK 336 484 cfgetspeed(B57600) - checking both inspeed and outspeed - OK 485 cfsetspeed(B76800) - OK 486 cfgetspeed(B76800) - checking both inspeed and outspeed - OK 337 487 cfsetspeed(B115200) - OK 338 488 cfgetspeed(B115200) - checking both inspeed and outspeed - OK … … 341 491 cfsetspeed(B460800) - OK 342 492 cfgetspeed(B460800) - checking both inspeed and outspeed - OK 493 cfsetspeed(B921600) - OK 494 cfgetspeed(B921600) - checking both inspeed and outspeed - OK 343 495 Init - close - /dev/test - OK 344 496 Multiple open of the device … … 396 548 Termios_test_driver - rtems_set_initial_baud - 38400 - OK 397 549 398 *** END OF TEST TERMIOS 01 ***550 *** END OF TEST TERMIOS 1 *** -
testsuites/libtests/termios01/termios_testdriver.c
rc4b058ca r1c6926c1 86 86 const char *stop = "NONE"; 87 87 88 baud_requested = t->c_ cflag & CBAUD;88 baud_requested = t->c_ispeed; 89 89 90 90 number = rtems_termios_baud_to_number( baud_requested ); … … 165 165 rtems_libio_open_close_args_t *args = arg; 166 166 static bool firstCall = true; 167 167 168 168 static const rtems_termios_callbacks Callbacks = { 169 169 NULL, /* firstOpen */ … … 193 193 194 194 firstCall = false; 195 195 196 196 for (i = 0; i < sizeof( allocSizes ) / sizeof( allocSizes [0] ); ++i) { 197 197 void *opaque = rtems_heap_greedy_allocate( allocSizes, i ); -
testsuites/libtests/termios02/termios02.scn
rc4b058ca r1c6926c1 1 *** TERMIOS 02 TEST***1 *** BEGIN OF TEST TERMIOS 2 *** 2 2 tcdrain(12) - EBADF 3 3 tcdrain(stdin) - OK … … 25 25 ctermid( term_name ) - OK 26 26 ctermid ==> /dev/console 27 *** END OF TE RMIOS 02 TEST***27 *** END OF TEST TERMIOS 2 *** -
testsuites/libtests/termios03/termios03.scn
rc4b058ca r1c6926c1 1 *** TEST TERMIOS03 ***1 *** BEGIN OF TEST TERMIOS 3 *** 2 2 open(/dev/test) - OK 3 3 Writing: This is test output. … … 69 69 08 20 08 08 20 08 08 20 08 08 20 08 08 20 08 08 |. .. .. .. .. ..| 70 70 20 08 08 20 08 08 20 08 08 20 08 08 20 08 08 20 | .. .. .. .. .. | 71 08 08 20 08 2e 0d 0a 71 08 08 20 08 2e 0d 0a |.. .... | 72 72 73 73 Reading (expected): … … 98 98 99 99 close(/dev/test) - OK 100 *** END OF TEST TERMIOS 03 ***100 *** END OF TEST TERMIOS 3 *** -
testsuites/libtests/termios04/termios04.scn
rc4b058ca r1c6926c1 1 *** TEST TERMIOS04 ***2 open(/dev/test) - OK 1 *** BEGIN OF TEST TERMIOS 4 *** 2 open(/dev/test) - OK 3 3 Writing: This is interrupt driven test output. 4 4 Transmitted 39 characters … … 30 30 65 72 72 75 70 74 20 64 72 69 76 65 6e 20 72 65 |errupt driven re| 31 31 61 64 2e 0d 0a |ad... | 32 close(/dev/test) - OK 33 *** END OF TEST TERMIOS 04 ***32 close(/dev/test) - OK 33 *** END OF TEST TERMIOS 4 *** -
testsuites/libtests/termios05/termios05.scn
rc4b058ca r1c6926c1 1 *** TEST TERMIOS05 ***2 open(/dev/test) - OK 1 *** BEGIN OF TEST TERMIOS 5 *** 2 open(/dev/test) - OK 3 3 Writing: This is test output. 4 4 Transmitted 20 characters … … 56 56 0a 61 62 63 64 65 66 67 68 2e 0d 0a |.abcdefgh... | 57 57 Changing c_iflag to: Disable to lower case mapping on input 58 close(/dev/test) - OK 59 *** END OF TEST TERMIOS 05 ***58 close(/dev/test) - OK 59 *** END OF TEST TERMIOS 5 *** -
testsuites/libtests/termios06/init.c
rc4b058ca r1c6926c1 199 199 read_it(); 200 200 close_it(); 201 201 202 202 TEST_END(); 203 203 -
testsuites/libtests/termios06/termios06.scn
rc4b058ca r1c6926c1 1 2 3 *** TEST TERMIOS06 *** 4 open(/dev/test) - OK 1 *** BEGIN OF TEST TERMIOS 6 *** 2 open(/dev/test) - OK 5 3 ioctl - RTEMS_IO_SNDWAKEUP - OK 6 4 ioctl - RTEMS_IO_RCVWAKEUP - OK … … 11 9 pppclose called 12 10 pppopen called 13 write(PPPD TEST) - OK 11 write(PPPD TEST) - OK 14 12 pppwrite called - 10 bytes 15 13 50 50 50 44 20 54 45 53 54 00 |PPPD TEST. | 16 17 14 pppstart called 18 ioctl(/dev/test) - OK 15 ioctl(/dev/test) - OK 19 16 pppioctl called 20 tcgetattr(/dev/test) - OK 17 tcgetattr(/dev/test) - OK 21 18 Turn on flow control on output - OK 22 19 Turn off flow control on output - OK … … 26 23 Reading (expected): 27 24 54 68 69 73 20 69 73 20 74 65 73 74 20 50 50 50 |This is test PPP| 28 29 25 20 69 6e 70 75 74 | input | 30 31 26 pppread called 32 27 pppinput called - with (T) … … 54 49 pppinput called - with (.) 55 50 Rx_Wake - invoked 56 57 51 Read 0 bytes from read(2) 58 close(/dev/test) - OK 52 Error: length must be greater than zero.close(/dev/test) - OK 59 53 pppclose called 60 *** END OF TEST TERMIOS 06 ***54 *** END OF TEST TERMIOS 6 *** -
testsuites/libtests/termios07/termios07.scn
rc4b058ca r1c6926c1 1 XXX fill in with test output 1 *** BEGIN OF TEST TERMIOS 7 *** 2 rtems_termios_bufsize( 64, 64, 64 ) - OK 3 open(/dev/test) - OK 4 Changing c_iflag to: Set XON/XOFF 5 Writing: 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789Transmitted 200 characters 6 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 |0123456789012345| 7 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 |6789012345678901| 8 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 |2345678901234567| 9 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 |8901234567890123| 10 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 |4567890123456789| 11 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 |0123456789012345| 12 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 |6789012345678901| 13 32 33 34 35 36 37 38 39 30 31 32 33 34 35 36 37 |2345678901234567| 14 38 39 30 31 32 33 34 35 36 37 38 39 30 31 32 33 |8901234567890123| 15 34 35 36 37 38 39 30 31 32 33 34 35 36 37 38 39 |4567890123456789| 16 30 31 32 33 34 35 36 37 38 39 30 31 32 33 34 35 |0123456789012345| 17 36 37 38 39 30 31 32 33 34 35 36 37 38 39 30 31 |6789012345678901| 18 32 33 34 35 36 37 38 39 |23456789 | 19 close(/dev/test) - OK 20 *** END OF TEST TERMIOS 7 *** -
testsuites/libtests/termios08/termios08.scn
rc4b058ca r1c6926c1 1 XXX fill in with test output 1 *** BEGIN OF TEST TERMIOS 8 *** 2 open(/dev/test) - OK 3 Changing c_lflag to: non-canonical 4 Changing to polling - VMIN=0 VTIME=0 5 read - 0 expected 6 Changing to half-second timeout - VMIN=0 VTIME=5 7 read - 0 expected 8 Changing to half-second timeout - VMIN=5 VTIME=3 9 Enqueue 2 characters 10 read - 2 expected 11 Changing to half-second timeout - VMIN=5 VTIME=3 12 Enqueue 1 character 13 read - 1 expected 14 Enqueue 7 characters 15 read - 5 expected 16 read - 2 expected 17 close(/dev/test) - OK 18 *** END OF TEST TERMIOS 8 *** -
tools/cpu/sh/sci.c
rc4b058ca r1c6926c1 44 44 19200, 45 45 38400, 46 7200, 47 14400, 48 28800, 46 49 57600, 50 76800, 47 51 115200, 48 52 230400, 49 460800 53 460800, 54 921600 50 55 }; 51 56 … … 124 129 " unsigned char n ;\n" 125 130 " unsigned char N ;\n" 131 " speed_t B ;\n" 126 132 "} _sci_bitrates[] = {\n" 127 "/* n N error */\n" );133 "/* n N B error */\n" ); 128 134 129 135 for ( i = 0 ; i < sizeof(bitrate)/sizeof(int) ; i++ ) … … 133 139 if ( i > 0 ) 134 140 fprintf( file, ",\n" ); 135 fprintf( file, " { %1d, %3d } /* %+7.2f%% ; B%d ",141 fprintf( file, " { %1d, %3d, %d } /* %+7.2f%% ; B%d ", 136 142 best->n, 137 143 best->N, 144 best->B, 138 145 best->err, 139 146 best->B ); … … 147 154 fprintf( file, 148 155 "int _sci_get_brparms( \n" 149 " tcflag_t cflag,\n"156 " speed_t spd,\n" 150 157 " unsigned char *smr,\n" 151 158 " unsigned char *brr )\n" 152 159 "{\n" 153 " unsigned int offset ;\n\n" 154 " offset = ( cflag & ( CBAUD & ~CBAUDEX ) )\n" 155 " + ( ( cflag & CBAUDEX ) ? B38400 : 0 );\n" 156 " if ( offset == 0 ) return -1 ;\n" 157 " offset-- ;\n\n" 160 " int offset = -1;\n" 161 " int i;\n\n" 162 " for(i = 0; i < sizeof(_sci_bitrates)/sizeof(_sci_bitrates[0]); i++) {\n" 163 " if( _sci_bitrates[i].B == spd ) {\n" 164 " offset = i;\n" 165 " break;\n" 166 " }\n" 167 " }\n" 168 " if ( offset == -1 ) return -1 ;\n" 158 169 " if ( _sci_bitrates[offset].n > 3 ) return -1;\n\n" 159 170 " *smr &= ~0x03;\n"
Note: See TracChangeset
for help on using the changeset viewer.