28#if (HAL_USE_SERIAL == TRUE) || defined(__DOXYGEN__)
38#define SD_PARITY_ERROR CHN_PARITY_ERROR
39#define SD_FRAMING_ERROR CHN_FRAMING_ERROR
40#define SD_OVERRUN_ERROR CHN_OVERRUN_ERROR
41#define SD_NOISE_ERROR CHN_NOISE_ERROR
42#define SD_BREAK_DETECTED CHN_BREAK_DETECTED
43#define SD_QUEUE_FULL_ERROR CHN_BUFFER_FULL_ERROR
59#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
60#define SERIAL_DEFAULT_BITRATE 38400
72#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
73#define SERIAL_BUFFERS_SIZE 16
104#define _serial_driver_methods \
105 _base_asynchronous_channel_methods
151#define sdPutI(sdp, b) oqPutI(&(sdp)->oqueue, b)
167#define sdPut(sdp, b) oqPut(&(sdp)->oqueue, b)
188#define sdPutTimeout(sdp, b, t) oqPutTimeout(&(sdp)->oqueue, b, t)
202#define sdGetI(sdp) iqGetI(&(sdp)->iqueue)
216#define sdGet(sdp) iqGet(&(sdp)->iqueue)
235#define sdGetTimeout(sdp, t) iqGetTimeout(&(sdp)->iqueue, t)
251#define sdWriteI(sdp, b, n) oqWriteI(&(sdp)->oqueue, b, n)
266#define sdWrite(sdp, b, n) oqWriteTimeout(&(sdp)->oqueue, b, n, TIME_INFINITE)
287#define sdWriteTimeout(sdp, b, n, t) \
288 oqWriteTimeout(&(sdp)->oqueue, b, n, t)
303#define sdAsynchronousWrite(sdp, b, n) \
304 oqWriteTimeout(&(sdp)->oqueue, b, n, TIME_IMMEDIATE)
320#define sdReadI(sdp, b, n) iqReadI(&(sdp)->iqueue, b, n)
335#define sdRead(sdp, b, n) iqReadTimeout(&(sdp)->iqueue, b, n, TIME_INFINITE)
356#define sdReadTimeout(sdp, b, n, t) iqReadTimeout(&(sdp)->iqueue, b, n, t)
372#define sdAsynchronousRead(sdp, b, n) \
373 iqReadTimeout(&(sdp)->iqueue, b, n, TIME_IMMEDIATE)
384#if !defined(SERIAL_ADVANCED_BUFFERING_SUPPORT) || \
385 (SERIAL_ADVANCED_BUFFERING_SUPPORT == FALSE)
void(* qnotify_t)(io_queue_t *qp)
Queue notification callback type.
msg_t sdStart(SerialDriver *sdp, const SerialConfig *config)
Configures and starts the driver.
struct hal_serial_driver SerialDriver
Structure representing a serial driver.
#define _serial_driver_data
SerialDriver specific data.
#define _serial_driver_methods
SerialDriver specific methods.
msg_t sdControl(SerialDriver *sdp, unsigned int operation, void *arg)
Control operation on a serial port.
bool sdGetWouldBlock(SerialDriver *sdp)
Direct input check on a SerialDriver.
void sdIncomingDataI(SerialDriver *sdp, uint8_t b)
Handles incoming data.
void sdStop(SerialDriver *sdp)
Stops the driver.
void sdObjectInit(SerialDriver *sdp, qnotify_t inotify, qnotify_t onotify)
Initializes a generic serial driver object.
struct hal_serial_config SerialConfig
PLATFORM Serial Driver configuration structure.
void sdInit(void)
Serial Driver initialization.
bool sdPutWouldBlock(SerialDriver *sdp)
Direct output check on a SerialDriver.
sdstate_t
Driver state machine possible states.
msg_t sdRequestDataI(SerialDriver *sdp)
Handles outgoing data.
PLATFORM serial subsystem low level driver header.
SerialDriver virtual methods table.
Full duplex serial driver class.
const struct SerialDriverVMT * vmt
Virtual Methods Table.