The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

Распечатка 5.5 Настройка termios

Распечатка 5.5 Настройка termios

Предыдущая  Содержание  Следующая V*D*V

Распечатка 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);

}

 

Предыдущая  Содержание  Следующая