# # $Id$ # This driver was submitted by Katsutoshi Shibuya . Configuration ------------- The application can choose this driver by using "CONSOLEX_DRIVER_TABLE_ENTRY" in the driver table definition, in place of "CONSOLE_DRIVER_TABLE_ENTRY". See consolex/cTest.c for an example and consolex/README for more information. Programmatic Usage ------------------ - You can open 9 devices; console tty00, tty01, tty02, tty03, rtty00, rtty01, rtty02, rtty03 tty00, rtty00 and console correspond to port#1 of MVME162LX, tty01 and rtty01 correspond to port#2, and so on. - tty0x are "cooked" devices. They support following flags on termios definition; ISTRIP, INLCR, IGNCR, ICRNL, IUCLC, OLCUC, ONLCR, OCRNL, ICANON, ECHO, CBAUD, B38400, B19200, B9600, CSIZE, CS8, CS7, PARENB, PARODD, CSTOPB, - rtty0x are "raw" devices. They support following flags on termios definition; CBAUD, B38400, B19200, B9600, CSIZE, CS8, CS7, PARENB, PARODD, CSTOPB, - The default parameter is; B38400, CS8, ICRNL, ONLCR, ICANON, ECHO (but all flags except B38400 and CS8 will be ignored on raw device.) - All devices support O_NDELAY (non blocking read/write) mode operation. (Non-blocking cooked mode output is valid, but will not work fine.) (Non-blocking cooked mode input with ECHO flag may be blocked while sending echoed character.) - All devices support hardware flow control by CTS/RTS. (There is no way to disable it. There are no supports for soft flow control.) - The application can use tcgetattr or ioctl to obtain the parameters of the device into struct termios. - The application can use tcsetattr or ioctl to set the parameters of the device within the struct temios. The action argument (2nd arg) of the tcsetattr must be TCSANOW. - On opening the device, the driver activate DTR line. On closing the device, the driver deactivate DTR line. If 2 or more device opening occures at the same time on the same port, only the first open procedure activates DTR line, and only the last close procedure deactivate it. - There are no device locking mechanisms. Application can open same device several times. But 2 simultanious reading operation on the same port will cause unexpected result. Porting Notes ------------- - This code can be used for any Zilog SCC based board. Change the time constant parameters and SCC register base addresses. - This code is well separated into "device depended part" and "device independed part". They can use device independed part for any other board. The device independed part requires following functions; void SCCInitialize(); Initialize hardware. rtems_boolean SCCGetOne(int port, char *ch); Get one character from port. If no character is in the receiver buffer, this function returns FALSE, otherwise TRUE. char SCCGetOneBlocked(int port); Get one character from port. If no character is in the receiver buffer, wait it passing the CPU to the other task. rtems_boolean SCCSendOne(int port, char ch); Send one character via port. If the transmitter is not ready, this function returns FALSE, otherwise TRUE. void SCCSendOneBlocked(int port, char ch); Send one character via port. Wait until the transmitter is ready, passing the CPU to the other task. unsigned32 SCCSetAttributes(int port, struct termios *tm); Set device attribute according to the information in the struct termios. c_cflags parameter (baud, parity, stopbits and code size) will be checked. On the successful completion, this function should return 0. unsigned32 SCCGetAttributes(int port, struct termios *tm); Get device attribute according into the struct termios. c_cflags parameter (baud, parity, stopbits and code size) will be set. On the successful completion, this function should return 0. void SCCSetDTR(port); Activate DTR line. void SCCResetDTR(port); Deactivate DTR line. void SCCSetRTS(port); Activate RTS line. void SCCResetRTS(port); Deactivate RTS line. int SCCGetCTS(port); Return non zero when CTS line is activated. - If you don't want console port, undefine "CONSOLEPORT". - This code does not use ESCC feature; i.e. does not read register #4/#5/#14