Hi Nathan, Have you seen https://github.com/apache/nuttx/blob/master/arch/arm/src/stm32f7/stm32_serial.c#L2657 ?
David -----Original Message----- From: Nathan Hartman <hartman.nat...@gmail.com> Sent: Monday, January 30, 2023 7:16 PM To: dev@nuttx.apache.org Subject: Serial driver: No BREAK support? Serial communications sometimes use a condition called BREAK [1]. I need to interface to 3rd party equipment that uses this feature. In Unix-like OSes a BREAK can be sent by calling termios function tcsendbreak() or ioctl TCSBRK. NuttX has an extern declaration for tcsendbreak() and a #define for TCSBRK. However, there is no implementation for these in the serial driver (no such function, no handling for this IOCTL). I am wondering how to implement this in the serial driver. I know that the basic change is: (1) In libs/libc/termios/, add new file lib_tcsendbreak.c which calls ioctl TCSBRK. (2) In drivers/serial/serial.c uart_ioctl(), add a case for TCSBRK which calls the upper half driver, e.g., new function uart_tcsendbreak(). (3) In uart_tcsendbreak(), do some magic. That magic is the question: What if there is pending transmit data? Then BREAK should happen after transmit done but before any new transmit data. What if filep->f_oflags & O_NONBLOCK? Then how does the driver schedule BREAK to happen after transmit done but before new transmit data? Any ideas would be appreciated. References: [1] https://stackoverflow.com/questions/1279478/rs-232-break-signal#1279671 Cheers, Nathan