27#if (HAL_USE_SERIAL == TRUE) || defined(__DOXYGEN__)
50static size_t _write(
void *ip,
const uint8_t *bp,
size_t n) {
56static size_t _read(
void *ip, uint8_t *bp,
size_t n) {
82static size_t _writet(
void *ip,
const uint8_t *bp,
size_t n,
88static size_t _readt(
void *ip, uint8_t *bp,
size_t n,
94static msg_t _ctl(
void *ip,
unsigned int operation,
void *arg) {
106#if defined(SD_LLD_IMPLEMENTS_CTL)
108 return sd_lld_control(sdp, operation, arg);
154#if !defined(SERIAL_ADVANCED_BUFFERING_SUPPORT) || \
155 (SERIAL_ADVANCED_BUFFERING_SUPPORT == FALSE) || \
194#if defined(SD_LLD_ENHANCED_API)
360 return _ctl((
void *)sdp, operation, arg);
static const struct EFlashDriverVMT vmt
void iqResetI(input_queue_t *iqp)
Resets an input queue.
size_t oqWriteTimeout(output_queue_t *oqp, const uint8_t *bp, size_t n, sysinterval_t timeout)
Output queue write with timeout.
void iqObjectInit(input_queue_t *iqp, uint8_t *bp, size_t size, qnotify_t infy, void *link)
Initializes an input queue.
msg_t iqGetTimeout(input_queue_t *iqp, sysinterval_t timeout)
Input queue read with timeout.
#define iqIsEmptyI(iqp)
Evaluates to true if the specified input queue is empty.
msg_t iqPutI(input_queue_t *iqp, uint8_t b)
Input queue write.
void oqResetI(output_queue_t *oqp)
Resets an output queue.
void(* qnotify_t)(io_queue_t *qp)
Queue notification callback type.
size_t iqReadTimeout(input_queue_t *iqp, uint8_t *bp, size_t n, sysinterval_t timeout)
Input queue read with timeout.
msg_t oqPutTimeout(output_queue_t *oqp, uint8_t b, sysinterval_t timeout)
Output queue write with timeout.
void oqObjectInit(output_queue_t *oqp, uint8_t *bp, size_t size, qnotify_t onfy, void *link)
Initializes an output queue.
msg_t oqGetI(output_queue_t *oqp)
Output queue read.
#define oqIsFullI(oqp)
Evaluates to true if the specified output queue is full.
#define HAL_RET_UNKNOWN_CTL
Unknown control code.
#define CHN_OUTPUT_EMPTY
Output queue empty.
#define CHN_CTL_INVALID
Invalid operation code.
#define CHN_INPUT_AVAILABLE
Data available in the input queue.
#define CHN_CTL_NOP
Does nothing.
#define chnAddFlagsI(ip, flags)
Adds status flags to the listeners's flags mask.
static void osalSysLock(void)
Enters a critical zone from thread context.
static void osalSysUnlock(void)
Leaves a critical zone from thread context.
void osalOsRescheduleS(void)
Checks if a reschedule is required and performs it.
static void osalEventObjectInit(event_source_t *esp)
Initializes an event source object.
#define osalDbgAssert(c, remark)
Condition assertion.
#define osalDbgCheck(c)
Function parameters check.
#define osalDbgCheckClassI()
I-Class state check.
static size_t _writet(void *ip, const uint8_t *bp, size_t n, sysinterval_t timeout)
static msg_t _get(void *ip)
static msg_t _gett(void *ip, sysinterval_t timeout)
static msg_t _ctl(void *ip, unsigned int operation, void *arg)
static msg_t _put(void *ip, uint8_t b)
msg_t sdStart(SerialDriver *sdp, const SerialConfig *config)
Configures and starts the driver.
struct hal_serial_driver SerialDriver
Structure representing a serial driver.
static size_t _write(void *ip, const uint8_t *bp, size_t n)
static msg_t _putt(void *ip, uint8_t b, sysinterval_t timeout)
#define SERIAL_BUFFERS_SIZE
Serial buffers size.
msg_t sdControl(SerialDriver *sdp, unsigned int operation, void *arg)
Control operation on a serial port.
static size_t _readt(void *ip, uint8_t *bp, size_t n, sysinterval_t timeout)
bool sdGetWouldBlock(SerialDriver *sdp)
Direct input check on a SerialDriver.
#define SD_QUEUE_FULL_ERROR
static size_t _read(void *ip, uint8_t *bp, size_t n)
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 sd_lld_start(SerialDriver *sdp, const SerialConfig *config)
Low level serial driver configuration and (re)start.
void sdInit(void)
Serial Driver initialization.
void sd_lld_init(void)
Low level serial driver initialization.
bool sdPutWouldBlock(SerialDriver *sdp)
Direct output check on a SerialDriver.
void sd_lld_stop(SerialDriver *sdp)
Low level serial driver stop.
msg_t sdRequestDataI(SerialDriver *sdp)
Handles outgoing data.
#define MSG_OK
Normal wakeup message.
uint64_t sysinterval_t
Type of time interval.
#define TIME_INFINITE
Infinite interval specification for all functions with a timeout specification.
SerialDriver virtual methods table.
const struct SerialDriverVMT * vmt
Virtual Methods Table.