NetBurner 3.5.7
PDF Version
Serial ISR Callbacks

Typedefs

typedef void(* serRxIdleCallback_t) (int portnum)
 Callback type for serial port receive-idle detection.
 
typedef void(* serTxCompCallback_t) (int portnum, uint32_t bytesSinceLast)
 Callback type for serial port transmit-complete notification.
 

Functions

serTxCompCallback_t RegisterTxEmptyCallback (int fd, serTxCompCallback_t pFunc)
 Register a transmit-complete callback.
 
serRxIdleCallback_t RegisterSerIdleCallback (int fd, int num_bits, serRxIdleCallback_t pFunc)
 Register a receive-idle callback.
 

Detailed Description

Callback types and registration functions for serial port interrupt-driven events such as transmit-complete and receive-idle detection.

Note
Only available on MODM7AE70, SBE70LC, SOMRT1061 and MODRT1171.

Typedef Documentation

◆ serRxIdleCallback_t

typedef void(* serRxIdleCallback_t) (int portnum)

#include <serial.h>

Callback type for serial port receive-idle detection.

Called from the serial port ISR when the line has been idle (no data received) for the configured number of bit times.

Parameters
portnumThe UART port number that detected idle

◆ serTxCompCallback_t

typedef void(* serTxCompCallback_t) (int portnum, uint32_t bytesSinceLast)

#include <serial.h>

Callback type for serial port transmit-complete notification.

Called from the serial port ISR when the last character has been transmitted and the shift register is empty.

Parameters
portnumThe UART port number that completed transmission
bytesSinceLastNumber of bytes transmitted since the last callback invocation

Function Documentation

◆ RegisterSerIdleCallback()

serRxIdleCallback_t RegisterSerIdleCallback ( int fd,
int num_bits,
serRxIdleCallback_t pFunc )

#include <serial.h>

Register a receive-idle callback.

Registers a callback function to be invoked from the serial port ISR when the receive line has been idle for the specified number of bit times. This is useful for detecting the end of a message in protocols that use inter-character gaps as frame delimiters (e.g. Modbus RTU). Pass nullptr to unregister a previously registered callback.

Note
Only available on USART ports (SAME70 platforms).

Expand for Example Usage

Examples

Example: Detect End-of-Frame Using Idle Timeout
volatile bool frameComplete = false;
void MyIdleCallback(int portnum)
{
frameComplete = true;
}
// Register callback with 40-bit idle timeout (~3.5 char times at 8N1)
int fd = SimpleOpenSerial(0, 9600);
RegisterSerIdleCallback(fd, 40, MyIdleCallback);
#define SimpleOpenSerial(p, b)
Simple open a serial port.
Definition serial.h:229
serRxIdleCallback_t RegisterSerIdleCallback(int fd, int num_bits, serRxIdleCallback_t pFunc)
Register a receive-idle callback.

Parameters
fdThe file descriptor of the serial port
num_bitsThe number of idle bit times before the callback fires
pFuncPointer to the callback function, or nullptr to unregister
Returns
The previously registered callback, or nullptr if none was registered

◆ RegisterTxEmptyCallback()

serTxCompCallback_t RegisterTxEmptyCallback ( int fd,
serTxCompCallback_t pFunc )

#include <serial.h>

Register a transmit-complete callback.

Registers a callback function to be invoked from the serial port ISR when the last character has been transmitted and the transmitter shift register is empty. Pass nullptr to unregister a previously registered callback.


Expand for Example Usage

Examples

Example: Toggle an RS-485 Driver Enable Pin on Transmit Complete
void MyTxDoneCallback(int portnum, uint32_t bytesSinceLast)
{
// Disable RS-485 driver after last byte has been shifted out
Pins[RS485_DE_PIN] = 0;
}
// In initialization:
int fd = SimpleOpenSerial(0, 115200);
RegisterTxEmptyCallback(fd, MyTxDoneCallback);
serTxCompCallback_t RegisterTxEmptyCallback(int fd, serTxCompCallback_t pFunc)
Register a transmit-complete callback.

Parameters
fdThe file descriptor of the serial port
pFuncPointer to the callback function, or nullptr to unregister
Returns
The previously registered callback, or nullptr if none was registered