Распечатка 5.5 Настройка termios |
Предыдущая Содержание Следующая |
Распечатка 5.5.
static void my_uart_set_termios(struct uart_port *port, struct termios *termios, struct termios *old) { unsigned int c_cflag = termios->c_cflag; unsigned int baud=9600, stop_bits=1, parity=0, data_bits=8; unsigned long flags;
/* Считаем число битов данных */ switch (c_cflag & CSIZE) { case CS5: data_bits = 5; break; case CS6: data_bits = 6; break; case CS7: data_bits = 7; break; case CS8: data_bits = 8; break; default: data_bits = 8; }
if(c_cflag & CSTOPB) stop_bits = 2;
if(c_cflag & PARENB) parity = 1; if(c_cflag & PARODD) parity = 2;
/* * Мы поддерживаем только 2 скорости, 9600 и 19200. Создаём * настройки termios для одной из них */ baud = uart_get_baud_rate(port, termios, old_termios, 9600, 19200)
spin_lock_irqsave(&port->lock, flags); SET_SPEED(baud); SET_STOP_BITS(stop_bits); SET_PARITY(parity); SET_BITS(data_bits);
port->read_status_mask = OVERRUN_ERROR;
if(termios->c_iflag & INPCK) port->read_status_mask |= PARITY_ERROR | FRAME_ERROR; port->ignore_status_mask = 0;
if(termios->c_iflag & IGNPAR) port->ignore_status_mask |= PARITY_ERROR | FRAME_ERROR;
spin_lock_irqrestore(&port->lock, flags); }
|
Предыдущая Содержание Следующая |