18#ifndef __VSF_TEMPLATE_USART_H__
19#define __VSF_TEMPLATE_USART_H__
38#ifndef VSF_USART_CFG_MULTI_CLASS
39# define VSF_USART_CFG_MULTI_CLASS ENABLED
50#if defined(VSF_HW_USART_COUNT) && !defined(VSF_HW_USART_MASK)
51# define VSF_HW_USART_MASK VSF_HAL_COUNT_TO_MASK(VSF_HW_USART_COUNT)
62#if defined(VSF_HW_USART_MASK) && !defined(VSF_HW_USART_COUNT)
63# define VSF_HW_USART_COUNT VSF_HAL_MASK_TO_COUNT(VSF_HW_USART_MASK)
83#ifndef VSF_USART_CFG_PREFIX
84# if VSF_USART_CFG_MULTI_CLASS == ENABLED
85# define VSF_USART_CFG_PREFIX vsf
86# elif defined(VSF_HW_USART_COUNT) && (VSF_HW_USART_COUNT != 0)
87# define VSF_USART_CFG_PREFIX vsf_hw
89# define VSF_USART_CFG_PREFIX vsf
101#ifndef VSF_USART_CFG_FUNCTION_RENAME
102# define VSF_USART_CFG_FUNCTION_RENAME ENABLED
113#ifndef VSF_USART_CFG_REIMPLEMENT_TYPE_MODE
114# define VSF_USART_CFG_REIMPLEMENT_TYPE_MODE DISABLED
125#ifndef VSF_USART_CFG_REIMPLEMENT_TYPE_IRQ_MASK
126# define VSF_USART_CFG_REIMPLEMENT_TYPE_IRQ_MASK DISABLED
137#ifndef VSF_USART_CFG_REIMPLEMENT_TYPE_STATUS
138# define VSF_USART_CFG_REIMPLEMENT_TYPE_STATUS DISABLED
149#ifndef VSF_USART_CFG_REIMPLEMENT_TYPE_CTRL
150# define VSF_USART_CFG_REIMPLEMENT_TYPE_CTRL DISABLED
162#ifndef VSF_USART_CFG_REIMPLEMENT_MODE_TO_DATA_BITS
163# define VSF_USART_CFG_REIMPLEMENT_MODE_TO_DATA_BITS \
176#ifndef VSF_USART_CFG_REIMPLEMENT_TYPE_CFG
177# define VSF_USART_CFG_REIMPLEMENT_TYPE_CFG DISABLED
190#ifndef VSF_USART_CFG_REIMPLEMENT_TYPE_CAPABILITY
191# define VSF_USART_CFG_REIMPLEMENT_TYPE_CAPABILITY DISABLED
202#ifndef VSF_USART_CFG_REIMPLEMENT_TYPE_STATUS
203# define VSF_USART_CFG_REIMPLEMENT_TYPE_STATUS DISABLED
214#ifndef VSF_USART_CFG_INHERIT_HAL_CAPABILITY
215# define VSF_USART_CFG_INHERIT_HAL_CAPABILITY ENABLED
228#define VSF_USART_APIS(__prefix_name) \
229 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, usart, init, VSF_MCONNECT(__prefix_name, _t) *usart_ptr, vsf_usart_cfg_t *cfg_ptr) \
230 __VSF_HAL_TEMPLATE_API(__prefix_name, void, usart, fini, VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
231 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, usart, get_configuration, VSF_MCONNECT(__prefix_name, _t) *usart_ptr, vsf_usart_cfg_t *cfg_ptr) \
232 __VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, usart, enable, VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
233 __VSF_HAL_TEMPLATE_API(__prefix_name, fsm_rt_t, usart, disable, VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
234 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_usart_capability_t, usart, capability, VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
235 __VSF_HAL_TEMPLATE_API(__prefix_name, void, usart, irq_enable, VSF_MCONNECT(__prefix_name, _t) *usart_ptr, vsf_usart_irq_mask_t irq_mask) \
236 __VSF_HAL_TEMPLATE_API(__prefix_name, void, usart, irq_disable, VSF_MCONNECT(__prefix_name, _t) *usart_ptr, vsf_usart_irq_mask_t irq_mask) \
237 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_usart_irq_mask_t, usart, irq_clear, VSF_MCONNECT(__prefix_name, _t) *usart_ptr, vsf_usart_irq_mask_t irq_mask) \
238 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_usart_status_t, usart, status, VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
239 __VSF_HAL_TEMPLATE_API(__prefix_name, uint_fast32_t, usart, rxfifo_get_data_count, VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
240 __VSF_HAL_TEMPLATE_API(__prefix_name, uint_fast32_t, usart, rxfifo_read, VSF_MCONNECT(__prefix_name, _t) *usart_ptr, void *buffer_ptr, uint_fast32_t count) \
241 __VSF_HAL_TEMPLATE_API(__prefix_name, uint_fast32_t, usart, txfifo_get_free_count, VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
242 __VSF_HAL_TEMPLATE_API(__prefix_name, uint_fast32_t, usart, txfifo_write, VSF_MCONNECT(__prefix_name, _t) *usart_ptr, void *buffer_ptr, uint_fast32_t count) \
243 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, usart, request_rx, VSF_MCONNECT(__prefix_name, _t) *usart_ptr, void *buffer_ptr, uint_fast32_t count) \
244 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, usart, request_tx, VSF_MCONNECT(__prefix_name, _t) *usart_ptr, void *buffer_ptr, uint_fast32_t count) \
245 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, usart, cancel_rx, VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
246 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, usart, cancel_tx, VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
247 __VSF_HAL_TEMPLATE_API(__prefix_name, int_fast32_t, usart, get_rx_count, VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
248 __VSF_HAL_TEMPLATE_API(__prefix_name, int_fast32_t, usart, get_tx_count, VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
249 __VSF_HAL_TEMPLATE_API(__prefix_name, vsf_err_t, usart, ctrl, VSF_MCONNECT(__prefix_name, _t) *usart_ptr, vsf_usart_ctrl_t ctrl, void* param)
251#define VSF_USART_ADDITIONAL_APIS(__prefix_name) \
252 static inline vsf_err_t VSF_MCONNECT(__prefix_name, _send_break) \
253 (VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
255 return VSF_MCONNECT(__prefix_name, _ctrl)(usart_ptr, \
256 VSF_USART_CTRL_SEND_BREAK, NULL); \
258 static inline vsf_err_t VSF_MCONNECT(__prefix_name, _set_break) \
259 (VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
261 vsf_usart_capability_t cap = \
262 VSF_MCONNECT(__prefix_name, _capability)(usart_ptr); \
263 VSF_HAL_ASSERT(cap.support_set_and_clear_break); \
264 return VSF_MCONNECT(__prefix_name, _ctrl)(usart_ptr, \
265 VSF_USART_CTRL_SET_BREAK, NULL); \
267 static inline vsf_err_t VSF_MCONNECT(__prefix_name, _clear_break) \
268 (VSF_MCONNECT(__prefix_name, _t) *usart_ptr) \
270 vsf_usart_capability_t cap = \
271 VSF_MCONNECT(__prefix_name, _capability)(usart_ptr); \
272 VSF_HAL_ASSERT(cap.support_set_and_clear_break); \
273 return VSF_MCONNECT(__prefix_name, _ctrl)(usart_ptr, \
274 VSF_USART_CTRL_CLEAR_BREAK, NULL); \
279#if VSF_USART_CFG_REIMPLEMENT_TYPE_MODE == DISABLED
323# define VSF_USART_FORCE_0_PARITY VSF_USART_FORCE_0_PARITY
337# define VSF_USART_0_5_STOPBIT VSF_USART_0_5_STOPBIT
351# define VSF_USART_6_BIT_LENGTH VSF_USART_6_BIT_LENGTH
355# define VSF_USART_9_BIT_LENGTH VSF_USART_9_BIT_LENGTH
369# define VSF_USART_CTS_HWCONTROL VSF_USART_CTS_HWCONTROL
382# define VSF_USART_TX_DISABLE VSF_USART_TX_DISABLE
393# define VSF_USART_SYNC_CLOCK_ENABLE VSF_USART_SYNC_CLOCK_ENABLE
415# define VSF_USART_TX_FIFO_THRESHOLD_EMPTY VSF_USART_TX_FIFO_THRESHOLD_EMPTY
419# define VSF_USART_TX_FIFO_THRESHOLD_NOT_FULL VSF_USART_TX_FIFO_THRESHOLD_NOT_FULL
432# define VSF_USART_RX_FIFO_THRESHOLD_HALF_FULL VSF_USART_RX_FIFO_THRESHOLD_HALF_FULL
465#ifndef VSF_USART_PARITY_MASK
473#ifndef VSF_USART_STOPBIT_MASK
480#ifndef VSF_USART_BIT_LENGTH_MASK
489#ifndef VSF_USART_TX_FIFO_THRESHOLD_MASK
495#ifndef VSF_USART_RX_FIFO_THRESHOLD_MASK
501#ifndef VSF_USART_HWCONTROL_MASK
530#ifdef VSF_USART_SYNC_CLOCK_LAST_BIT_MASK
534#ifdef VSF_USART_IRDA_PRESCALER_MASK
535 | VSF_USART_IRDA_PRESCALER_MASK
537#ifdef VSF_USART_IRDA_MASK
538 | VSF_USART_IRDA_MASK
541#ifdef VSF_USART_SMARTCARD_MASK
542 | VSF_USART_SMARTCARD_MASK
546#if VSF_USART_CFG_REIMPLEMENT_TYPE_IRQ_MASK == DISABLED
590# define VSF_USART_IRQ_MASK_CTS VSF_USART_IRQ_MASK_CTS
630# define VSF_USART_IRQ_MASK_BREAK_ERR VSF_USART_IRQ_MASK_BREAK_ERR
662# define VSF_USART_IRQ_MASK_RX_OVERFLOW_ERR VSF_USART_IRQ_MASK_RX_OVERFLOW_ERR
685# define VSF_USART_IRQ_MASK_TX_IDLE VSF_USART_IRQ_MASK_TX_IDLE
709# define VSF_USART_IRQ_MASK_NOISE_ERR VSF_USART_IRQ_MASK_NOISE_ERR
720#ifndef VSF_USART_IRQ_MASK_RX_IDLE
726#ifndef VSF_USART_IRQ_MASK_ERR
730# ifdef VSF_USART_IRQ_MASK_TX_OVERFLOW_ERR
736#ifndef VSF_USART_IRQ_ALL_BITS_MASK
740#ifdef VSF_USART_IRQ_MASK_RX_IDLE
743#ifdef VSF_USART_IRQ_MASK_TX_IDLE
750# ifdef VSF_USART_IRQ_MASK_TX_HALF_CPL
751 | VSF_USART_IRQ_MASK_TX_HALF_CPL
753# ifdef VSF_USART_IRQ_MASK_RX_HALF_CPL
754 | VSF_USART_IRQ_MASK_RX_HALF_CPL
756# ifdef VSF_USART_IRQ_MASK_CANCEL_TX_CPL
757 | VSF_USART_IRQ_MASK_CANCEL_TX_CPL
759# ifdef VSF_USART_IRQ_MASK_CANCEL_RX_CPL
760 | VSF_USART_IRQ_MASK_CANCEL_RX_CPL
765#if VSF_USART_CFG_REIMPLEMENT_TYPE_CFG == DISABLED
847# ifdef VSF_USART_IRQ_MASK_RX_IDLE
854#if VSF_USART_CFG_REIMPLEMENT_TYPE_CTRL == DISABLED
884# define VSF_USART_CTRL_SET_BREAK VSF_USART_CTRL_SET_BREAK
928#if VSF_USART_CFG_REIMPLEMENT_TYPE_STATUS == DISABLED
954#if VSF_USART_CFG_REIMPLEMENT_TYPE_CAPABILITY == DISABLED
956#if VSF_USART_CFG_INHERIT_HAL_CAPABILITY == ENABLED
974# ifdef VSF_USART_IRQ_MASK_TX_IDLE
977# ifdef VSF_USART_IRQ_MASK_RX_IDLE
992#undef __VSF_HAL_TEMPLATE_API
993#define __VSF_HAL_TEMPLATE_API VSF_HAL_TEMPLATE_API_FP
999#if VSF_USART_CFG_MULTI_CLASS == ENABLED
1356#if VSF_USART_CFG_REIMPLEMENT_MODE_TO_DATA_BITS == DISABLED
1449#if VSF_USART_CFG_FUNCTION_RENAME == ENABLED
1450# define __vsf_usart_t VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_t)
1451# define vsf_usart_init(__USART, ...) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_init) ((__vsf_usart_t *)(__USART), ##__VA_ARGS__)
1452# define vsf_usart_fini(__USART) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_fini) ((__vsf_usart_t *)(__USART))
1453# define vsf_usart_get_configuration(__USART, ...) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_get_configuration) ((__vsf_usart_t *)(__USART), ##__VA_ARGS__)
1454# define vsf_usart_capability(__USART) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_capability) ((__vsf_usart_t *)(__USART))
1455# define vsf_usart_enable(__USART) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_enable) ((__vsf_usart_t *)(__USART))
1456# define vsf_usart_disable(__USART) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_disable) ((__vsf_usart_t *)(__USART))
1457# define vsf_usart_irq_enable(__USART, ...) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_irq_enable) ((__vsf_usart_t *)(__USART), ##__VA_ARGS__)
1458# define vsf_usart_irq_disable(__USART, ...) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_irq_disable) ((__vsf_usart_t *)(__USART), ##__VA_ARGS__)
1459# define vsf_usart_irq_clear(__USART, ...) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_irq_clear) ((__vsf_usart_t *)(__USART), ##__VA_ARGS__)
1460# define vsf_usart_status(__USART) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_status) ((__vsf_usart_t *)(__USART))
1461# define vsf_usart_rxfifo_get_data_count(__USART, ...) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_rxfifo_get_data_count) ((__vsf_usart_t *)(__USART), ##__VA_ARGS__)
1462# define vsf_usart_rxfifo_read(__USART, ...) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_rxfifo_read) ((__vsf_usart_t *)(__USART), ##__VA_ARGS__)
1463# define vsf_usart_txfifo_get_free_count(__USART, ...) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_txfifo_get_free_count) ((__vsf_usart_t *)(__USART), ##__VA_ARGS__)
1464# define vsf_usart_txfifo_write(__USART, ...) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_txfifo_write) ((__vsf_usart_t *)(__USART), ##__VA_ARGS__)
1465# define vsf_usart_request_rx(__USART, ...) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_request_rx) ((__vsf_usart_t *)(__USART), ##__VA_ARGS__)
1466# define vsf_usart_request_tx(__USART, ...) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_request_tx) ((__vsf_usart_t *)(__USART), ##__VA_ARGS__)
1467# define vsf_usart_cancel_rx(__USART) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_cancel_rx) ((__vsf_usart_t *)(__USART))
1468# define vsf_usart_cancel_tx(__USART) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_cancel_tx) ((__vsf_usart_t *)(__USART))
1469# define vsf_usart_get_rx_count(__USART) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_get_rx_count) ((__vsf_usart_t *)(__USART))
1470# define vsf_usart_get_tx_count(__USART) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_get_tx_count) ((__vsf_usart_t *)(__USART))
1471# define vsf_usart_send_break(__USART) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_send_break) ((__vsf_usart_t *)(__USART))
1472# define vsf_usart_set_break(__USART) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_set_break) ((__vsf_usart_t *)(__USART))
1473# define vsf_usart_clear_break(__USART) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_clear_break) ((__vsf_usart_t *)(__USART))
1474# define vsf_usart_ctrl(__USART, ...) VSF_MCONNECT(VSF_USART_CFG_PREFIX, _usart_ctrl) ((__vsf_usart_t *)(__USART), ##__VA_ARGS__)
vsf_err_t
Definition __type.h:42
vsf_usart_mode_t
Definition uart.h:32
vsf_usart_irq_mask_t
Definition uart.h:106
#define VSF_USART_SYNC_CLOCK_LAST_BIT_MASK
Definition usart.h:129
vsf_arch_prio_t
Definition cortex_a_generic.h:88
#define NULL
Definition lvgl.h:26
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
unsigned uint32_t
Definition stdint.h:9
unsigned int uint_fast32_t
Definition stdint.h:27
int int_fast32_t
Definition stdint.h:26
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_hal_driver.h:203
Definition vsf_template_hal_driver.h:196
USART capability structure Defines the hardware capabilities and limitations of the USART interface.
Definition vsf_template_usart.h:955
uint8_t support_tx_idle
Support TX idle interrupt.
Definition vsf_template_usart.h:975
uint8_t max_data_bits
Maximum data bits per frame.
Definition vsf_template_usart.h:967
uint8_t support_set_and_clear_break
Support set and clear break.
Definition vsf_template_usart.h:972
inherit(vsf_peripheral_capability_t) vsf_usart_irq_mask_t irq_mask
Supported interrupt mask bits.
vsf_usart_irq_mask_t irq_mask
Definition usart.h:387
uint8_t support_rx_timeout
Support receive timeout.
Definition vsf_template_usart.h:970
uint8_t rxfifo_depth
RX FIFO depth in data frames (0 means no FIFO)
Definition vsf_template_usart.h:965
uint8_t support_rx_idle
Support RX idle interrupt.
Definition vsf_template_usart.h:978
uint8_t support_send_break
Support send break.
Definition vsf_template_usart.h:971
uint8_t txfifo_depth
TX FIFO depth in data frames (0 means no FIFO)
Definition vsf_template_usart.h:964
uint8_t min_data_bits
Minimum data bits per frame.
Definition vsf_template_usart.h:968
uint32_t min_baudrate
Minimum supported baudrate (bps) according to current clock configurations.
Definition vsf_template_usart.h:962
uint32_t max_baudrate
Maximum supported baudrate (bps) according to current clock configurations.
Definition vsf_template_usart.h:961
uint8_t support_sync_clock
Support Synchronous clock.
Definition vsf_template_usart.h:973
USART configuration structure Contains all parameters needed to initialize and configure a USART inst...
Definition vsf_template_usart.h:843
vsf_usart_mode_t mode
USART working mode.
Definition vsf_template_usart.h:844
uint32_t baudrate
Baudrate in Hz.
Definition vsf_template_usart.h:845
uint32_t rx_timeout
RX timeout in microseconds.
Definition vsf_template_usart.h:846
uint32_t rx_idle_cnt
Definition vsf_template_usart.h:848
vsf_usart_isr_t isr
Interrupt configuration.
Definition vsf_template_usart.h:850
USART interrupt configuration structure Contains all necessary information for configuring USART inte...
Definition vsf_template_usart.h:829
vsf_usart_isr_handler_t * handler_fn
Interrupt handler function pointer.
Definition vsf_template_usart.h:830
vsf_arch_prio_t prio
Interrupt priority.
Definition vsf_template_usart.h:832
void * target_ptr
User target pointer.
Definition vsf_template_usart.h:831
USART operation interface structure Contains function pointers for all USART operations.
Definition vsf_template_usart.h:990
USART status information structure Contains the current status of USART operations and FIFO threshold...
Definition uart.h:157
uint32_t __reserved
Reserved.
Definition vsf_template_usart.h:938
uint32_t is_busy
USART is busy with any operation.
Definition vsf_template_usart.h:934
uint32_t is_tx_busy
TX is busy transmitting data.
Definition vsf_template_usart.h:935
uint32_t value
Definition usart.h:284
uint32_t break_sent
BREAK signal sent.
Definition vsf_template_usart.h:937
uint32_t tx_fifo_level
TX FIFO current data level (0-255)
Definition vsf_template_usart.h:939
uint32_t is_rx_busy
RX is busy receiving data.
Definition vsf_template_usart.h:936
uint32_t rx_fifo_level
RX FIFO current data level (0-255)
Definition vsf_template_usart.h:940
USART instance structure Used for USART Multi Class support.
Definition vsf_template_usart.h:1008
const vsf_usart_op_t * op
Operation functions.
Definition vsf_template_usart.h:1009
vsf_usart_mode_t
Definition usart.h:116
vsf_usart_irq_mask_t
Definition usart.h:174
void vsf_usart_isr_handler_t(void *target_ptr, vsf_usart_t *usart_ptr, vsf_usart_irq_mask_t irq_mask)
Definition usart.h:255
fsm_rt_t
Definition vsf_fsm.h:315
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
#define VSF_USART_7_BIT_LENGTH
Definition vsf_template_usart.h:353
#define VSF_USART_IRQ_MASK_RX_TIMEOUT
Definition vsf_template_usart.h:574
fsm_rt_t vsf_usart_disable(vsf_usart_t *usart_ptr)
Disable a USART instance.
Definition usart_common.c:75
vsf_usart_status_t vsf_usart_status(vsf_usart_t *usart_ptr)
Get the status of USART instance.
Definition usart_common.c:111
struct vsf_usart_cfg_t vsf_usart_cfg_t
USART configuration structure Contains all parameters needed to initialize and configure a USART inst...
vsf_err_t vsf_usart_request_rx(vsf_usart_t *usart_ptr, void *buffer_ptr, uint_fast32_t count)
Request a DMA receive operation through the USART.
Definition usart_common.c:165
#define VSF_USART_CTS_HWCONTROL
Definition vsf_template_usart.h:369
struct vsf_usart_capability_t vsf_usart_capability_t
USART capability structure Defines the hardware capabilities and limitations of the USART interface.
vsf_err_t vsf_usart_cancel_rx(vsf_usart_t *usart_ptr)
Cancel an ongoing USART receive operation.
Definition usart_common.c:183
#define VSF_USART_HALF_DUPLEX_ENABLE
Definition vsf_template_usart.h:404
vsf_usart_mode_t
Predefined VSF USART modes that can be reimplemented in specific HAL drivers. Even if the hardware do...
Definition vsf_template_usart.h:312
@ VSF_USART_HALF_DUPLEX_DISABLE
USART Half-duplex configuration options.
Definition vsf_template_usart.h:402
@ VSF_USART_8_BIT_LENGTH
USART Data bit length configuration options.
Definition vsf_template_usart.h:347
@ VSF_USART_EVEN_PARITY
Even parity.
Definition vsf_template_usart.h:320
@ VSF_USART_ODD_PARITY
Odd parity.
Definition vsf_template_usart.h:321
@ VSF_USART_NO_PARITY
USART Parity configuration options.
Definition vsf_template_usart.h:319
@ VSF_USART_RX_ENABLE
RX enabled.
Definition vsf_template_usart.h:380
@ VSF_USART_TX_ENABLE
USART TX/RX enable/disable options.
Definition vsf_template_usart.h:379
@ VSF_USART_1_STOPBIT
USART Stop bit configuration options.
Definition vsf_template_usart.h:333
@ VSF_USART_SYNC_CLOCK_DISABLE
Sync clock disabled.
Definition vsf_template_usart.h:394
@ VSF_USART_NO_HWCONTROL
USART Hardware flow control configuration options.
Definition vsf_template_usart.h:365
#define VSF_USART_IRQ_MASK_FRAME_ERR
Definition vsf_template_usart.h:628
#define VSF_USART_IRQ_MASK_CTS
Definition vsf_template_usart.h:590
#define VSF_USART_5_BIT_LENGTH
Definition vsf_template_usart.h:349
uint_fast32_t vsf_usart_rxfifo_get_data_count(vsf_usart_t *usart_ptr)
Get the number of data currently received in the USART receive FIFO.
Definition usart_common.c:129
#define VSF_USART_9_BIT_LENGTH
Definition vsf_template_usart.h:355
uint_fast32_t vsf_usart_rxfifo_read(vsf_usart_t *usart_ptr, void *buffer_ptr, uint_fast32_t count)
Try to read the maximum length of data from the USART receive FIFO.
#define VSF_USART_CTRL_SET_BREAK
Definition vsf_template_usart.h:884
#define VSF_USART_1_5_STOPBIT
Definition vsf_template_usart.h:335
#define VSF_USART_FORCE_1_PARITY
Definition vsf_template_usart.h:325
#define VSF_USART_CTRL_SEND_BREAK
Definition vsf_template_usart.h:873
fsm_rt_t vsf_usart_enable(vsf_usart_t *usart_ptr)
Enable a USART instance.
Definition usart_common.c:66
#define VSF_USART_RX_FIFO_THRESHOLD_HALF_FULL
Definition vsf_template_usart.h:432
#define VSF_USART_TX_FIFO_THRESHOLD_EMPTY
Definition vsf_template_usart.h:415
#define VSF_USART_TX_DISABLE
Definition vsf_template_usart.h:382
struct vsf_usart_isr_t vsf_usart_isr_t
USART interrupt configuration structure Contains all necessary information for configuring USART inte...
#define VSF_USART_RX_FIFO_THRESHOLD_FULL
Definition vsf_template_usart.h:434
vsf_usart_irq_mask_t vsf_usart_irq_clear(vsf_usart_t *usart_ptr, vsf_usart_irq_mask_t irq_mask)
Clear interrupt flags of USART instance and return previous state.
Definition usart_common.c:102
#define VSF_USART_10_BIT_LENGTH
Definition vsf_template_usart.h:357
vsf_err_t vsf_usart_request_tx(vsf_usart_t *usart_ptr, void *buffer_ptr, uint_fast32_t count)
Request a DMA transmit operation through the USART.
Definition usart_common.c:174
#define VSF_USART_RTS_CTS_HWCONTROL
Definition vsf_template_usart.h:371
uint_fast32_t vsf_usart_txfifo_get_free_count(vsf_usart_t *usart_ptr)
Get the maximum number of data that can be sent through the USART send FIFO.
Definition usart_common.c:147
#define VSF_USART_IRQ_MASK_RX_OVERFLOW_ERR
Definition vsf_template_usart.h:662
vsf_err_t vsf_usart_cancel_tx(vsf_usart_t *usart_ptr)
Cancel an ongoing USART transmit operation.
Definition usart_common.c:192
vsf_usart_irq_mask_t
USART interrupt mask definitions These interrupts provide status and event notifications for USART op...
Definition vsf_template_usart.h:555
@ VSF_USART_IRQ_MASK_TX_CPL
TX complete(for request_tx API, data is written to TX FIFO) interrupt.
Definition vsf_template_usart.h:556
@ VSF_USART_IRQ_MASK_TX
TX FIFO threshold interrupt.
Definition vsf_template_usart.h:558
@ VSF_USART_IRQ_MASK_RX
RX FIFO threshold interrupt.
Definition vsf_template_usart.h:559
@ VSF_USART_IRQ_MASK_RX_CPL
RX complete(for request_rx API, data is read from RX FIFO) interrupt.
Definition vsf_template_usart.h:557
void vsf_usart_fini(vsf_usart_t *usart_ptr)
Finalize a USART instance.
Definition usart_common.c:47
#define VSF_USART_RTS_HWCONTROL
Definition vsf_template_usart.h:367
#define VSF_USART_APIS(__prefix_name)
USART API template, used to generate USART type, specific prefix function declarations,...
Definition vsf_template_usart.h:228
void vsf_usart_irq_enable(vsf_usart_t *usart_ptr, vsf_usart_irq_mask_t irq_mask)
Enable interrupt masks of USART instance.
Definition usart_common.c:84
void vsf_usart_irq_disable(vsf_usart_t *usart_ptr, vsf_usart_irq_mask_t irq_mask)
Disable interrupt masks of USART instance.
Definition usart_common.c:93
#define VSF_USART_IRQ_MASK_BREAK_ERR
Definition vsf_template_usart.h:630
#define VSF_USART_FORCE_0_PARITY
Definition vsf_template_usart.h:323
struct vsf_usart_status_t vsf_usart_status_t
USART status information structure Contains the current status of USART operations and FIFO threshold...
#define VSF_USART_RX_FIFO_THRESHOLD_NOT_EMPTY
Definition vsf_template_usart.h:430
int_fast32_t vsf_usart_get_rx_count(vsf_usart_t *usart_ptr)
Get the number of bytes received in the current or last USART operation.
Definition usart_common.c:201
#define VSF_USART_0_5_STOPBIT
Definition vsf_template_usart.h:337
vsf_err_t vsf_usart_init(vsf_usart_t *usart_ptr, vsf_usart_cfg_t *cfg_ptr)
Initialize a USART instance.
Definition usart_common.c:38
#define VSF_USART_SYNC_CLOCK_ENABLE
Definition vsf_template_usart.h:393
#define VSF_USART_IRQ_MASK_PARITY_ERR
Definition vsf_template_usart.h:646
#define VSF_USART_2_STOPBIT
Definition vsf_template_usart.h:339
vsf_usart_capability_t vsf_usart_capability(vsf_usart_t *usart_ptr)
Get the capability of USART instance.
Definition usart_common.c:120
vsf_usart_ctrl_t
USART control commands Defines the available control operations for USART instances.
Definition vsf_template_usart.h:863
@ __VSF_USART_CTRL_DUMMY_MASK
Definition vsf_template_usart.h:916
vsf_err_t vsf_usart_ctrl(vsf_usart_t *usart_ptr, vsf_usart_ctrl_t ctrl, void *param)
Execute a control command on the USART instance.
Definition usart_common.c:219
vsf_err_t vsf_usart_get_configuration(vsf_usart_t *usart_ptr, vsf_usart_cfg_t *cfg_ptr)
Get current configuration of a USART instance.
Definition usart_common.c:56
#define VSF_USART_IRQ_MASK_TX_IDLE
Definition vsf_template_usart.h:685
#define VSF_USART_CTRL_CLEAR_BREAK
Definition vsf_template_usart.h:895
#define VSF_USART_RX_DISABLE
Definition vsf_template_usart.h:384
@ VSF_USART_IRQ_MASK_ERR
Combined error interrupt mask.
Definition vsf_template_usart.h:727
@ VSF_USART_IRQ_MASK_TX_FIFO_THRESHOLD
TX FIFO threshold interrupt mask.
Definition vsf_template_usart.h:723
@ VSF_USART_IRQ_ALL_BITS_MASK
All supported interrupt mask bits.
Definition vsf_template_usart.h:737
@ VSF_USART_IRQ_MASK_RX_FIFO_THRESHOLD
RX FIFO threshold interrupt mask.
Definition vsf_template_usart.h:724
#define VSF_USART_IRQ_MASK_RX_IDLE
Definition vsf_template_usart.h:698
int_fast32_t vsf_usart_get_tx_count(vsf_usart_t *usart_ptr)
Get the number of bytes transmitted in the current or last USART operation.
Definition usart_common.c:210
#define VSF_USART_TX_FIFO_THRESHOLD_HALF_EMPTY
Definition vsf_template_usart.h:417
void vsf_usart_isr_handler_t(void *target_ptr, vsf_usart_t *usart_ptr, vsf_usart_irq_mask_t irq_mask)
USART interrupt handler function type declaration.
Definition vsf_template_usart.h:817
@ VSF_USART_BIT_LENGTH_MASK
Definition vsf_template_usart.h:481
@ VSF_USART_TX_FIFO_THRESHOLD_MASK
Definition vsf_template_usart.h:490
@ VSF_USART_PARITY_MASK
Definition vsf_template_usart.h:466
@ VSF_USART_MODE_ALL_BITS_MASK
Definition vsf_template_usart.h:520
@ VSF_USART_HALF_DUPLEX_MASK
Definition vsf_template_usart.h:517
@ VSF_USART_HWCONTROL_MASK
Definition vsf_template_usart.h:502
@ VSF_USART_RX_MASK
Definition vsf_template_usart.h:511
@ VSF_USART_STOPBIT_MASK
Definition vsf_template_usart.h:474
@ VSF_USART_RX_FIFO_THRESHOLD_MASK
Definition vsf_template_usart.h:496
@ VSF_USART_SYNC_CLOCK_MASK
Definition vsf_template_usart.h:514
@ VSF_USART_TX_MASK
Definition vsf_template_usart.h:508
#define VSF_USART_TX_FIFO_THRESHOLD_NOT_FULL
Definition vsf_template_usart.h:419
#define VSF_USART_IRQ_MASK_NOISE_ERR
uint_fast32_t vsf_usart_txfifo_write(vsf_usart_t *usart_ptr, void *buffer_ptr, uint_fast32_t count)
Try to write the maximum length of data to the USART send FIFO.
#define VSF_USART_6_BIT_LENGTH
Definition vsf_template_usart.h:351
#define VSF_USART_IRQ_MASK_TX_OVERFLOW_ERR
Definition vsf_template_usart.h:674