Я запускаю встроенное ядро Linux на аппаратном обеспечении, которое можно настроить как DTE/DCE. В драйверах tty/serial в файле tty_io.c есть функция tty_tiocmset(), которая берет бит-шаблон из tty_ioctl для установки/очистки определенных сигналов управления модемом. Интересно, что функция tty_tiocmset() маскирует все другие модемные сигналы, кроме TIOCM_DTR | TIOCM_RTS | TIOCM_OUT1 | TIOCM_OUT2 | TIOCM_LOOP (эта маска показана в коде ниже). Однако, если вы посмотрите на документацию, вы увидите, что все модемные сигналы должны быть установлены/очищены. http://www.kernel.org/doc/man-pages/online/pages/man4/tty_ioctl.4.html прокрутите страницу вниз до «Modem Control».tty_tiocmset в linux ядро маскирует желаемый сигнал модема
Кто-нибудь просто знает, почему эта маска присутствует без других сигналов, таких как RI, CD, CTS, DSR? Также есть ли другой способ использовать немодифицированный драйвер для управления другими модемными сигналами?
Спасибо, я был смущен этими сигналами OUT1 и OUT2, но имеет смысл, что я могу просто использовать их и переназначать их по мере необходимости для DCE. Я никогда не видел, чтобы они появлялись в любом драйвере. Поскольку мой драйвер позволит порту uart действовать как dce или dte, я полагаю, что имеет смысл просто отображать сигналы модема DTE и сигналы OUT на соответствующие сигналы модема DCE. – user1415608