VSF Documented
usart_template.inc
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#if VSF_HAL_USE_USART == ENABLED
19
20/*============================ INCLUDES ======================================*/
21/*============================ MACROS ========================================*/
22
23#ifndef VSF_USART_CFG_REIMPLEMENT_API_REQUEST
24# define VSF_USART_CFG_REIMPLEMENT_API_REQUEST DISABLED
25#endif
26
27#ifndef VSF_USART_CFG_REIMPLEMENT_API_CAPABILITY
28# define VSF_USART_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
29#endif
30
31#ifndef VSF_USART_CFG_REIMPLEMENT_API_CTRL
32# define VSF_USART_CFG_REIMPLEMENT_API_CTRL DISABLED
33#endif
34
35#ifndef VSF_USART_CFG_REIMPLEMENT_API_GET_CONFIGURATION
36# define VSF_USART_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
37#endif
38
39#ifndef VSF_USART_CFG_REIMPLEMENT_API_IRQ_CLEAR
40# define VSF_USART_CFG_REIMPLEMENT_API_IRQ_CLEAR DISABLED
41#endif
42
43#ifdef VSF_USART_CFG_IMP_REMAP_PREFIX
44# undef VSF_USART_CFG_REIMPLEMENT_API_REQUEST
45# undef VSF_USART_CFG_REIMPLEMENT_API_CAPABILITY
46# undef VSF_USART_CFG_REIMPLEMENT_API_CTRL
47# undef VSF_USART_CFG_REIMPLEMENT_API_GET_CONFIGURATION
48# undef VSF_USART_CFG_REIMPLEMENT_API_IRQ_CLEAR
49# define VSF_USART_CFG_REIMPLEMENT_API_REQUEST ENABLED
50# define VSF_USART_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
51# define VSF_USART_CFG_REIMPLEMENT_API_CTRL ENABLED
52# define VSF_USART_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
53# define VSF_USART_CFG_REIMPLEMENT_API_IRQ_CLEAR ENABLED
54#endif
55
56#if VSF_USART_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
57# ifndef VSF_USART_CFG_CAPABILITY_IRQ_MASK
58# define VSF_USART_CFG_CAPABILITY_IRQ_MASK VSF_USART_IRQ_ALL_BITS_MASK
59# endif
60# ifndef VSF_USART_CFG_CAPABILITY_MAX_BAUDRATE
61# define VSF_USART_CFG_CAPABILITY_MAX_BAUDRATE 921600
62# endif
63# ifndef VSF_USART_CFG_CAPABILITY_MIN_BAUDRATE
64# define VSF_USART_CFG_CAPABILITY_MIN_BAUDRATE 4800
65# endif
66# ifndef VSF_USART_CFG_CAPABILITY_TXFIFO_DEPTH
67# define VSF_USART_CFG_CAPABILITY_TXFIFO_DEPTH 64
68# endif
69# ifndef VSF_USART_CFG_CAPABILITY_RXFIFO_DEPTH
70# define VSF_USART_CFG_CAPABILITY_RXFIFO_DEPTH 64
71# endif
72# ifndef VSF_USART_CFG_CAPABILITY_MAX_DATA_BITS
73# define VSF_USART_CFG_CAPABILITY_MAX_DATA_BITS 9
74# endif
75# ifndef VSF_USART_CFG_CAPABILITY_MIN_DATA_BITS
76# define VSF_USART_CFG_CAPABILITY_MIN_DATA_BITS 8
77# endif
78# ifndef VSF_USART_CFG_CAPABILITY_SUPPORT_RX_TIMEOUT
79# define VSF_USART_CFG_CAPABILITY_SUPPORT_RX_TIMEOUT 1
80# endif
81# ifndef VSF_USART_CFG_CAPABILITY_SUPPORT_SEND_BREAK
82# define VSF_USART_CFG_CAPABILITY_SUPPORT_SEND_BREAK 1
83# endif
84# ifndef VSF_USART_CFG_CAPABILITY_SUPPORT_SET_AND_CLEAR_BREAK
85# define VSF_USART_CFG_CAPABILITY_SUPPORT_SET_AND_CLEAR_BREAK 0
86# endif
87#endif
88
89#define vsf_real_usart_t VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_t)
90#define vsf_real_usart_request_rx VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_request_rx)
91#define vsf_real_usart_cancel_rx VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_cancel_rx)
92#define vsf_real_usart_get_rx_count VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_get_rx_count)
93#define vsf_real_usart_request_tx VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_request_tx)
94#define vsf_real_usart_cancel_tx VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_cancel_tx)
95#define vsf_real_usart_get_tx_count VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_get_tx_count)
96#define vsf_real_usart_capability VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_capability)
97#define vsf_real_usart_ctrl VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_ctrl)
98#define vsf_real_usart_get_configuration VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_get_configuration)
99#define vsf_real_usart_irq_clear VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_irq_clear)
100#define vsf_real_usart_tx_send_break VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_tx_send_break)
101
102/*============================ IMPLEMENTATION ================================*/
103
104#if VSF_USART_CFG_REIMPLEMENT_API_REQUEST == DISABLED
105
106vsf_err_t vsf_real_usart_request_rx(vsf_real_usart_t *usart_ptr, void *buffer_ptr, uint_fast32_t count)
107{
108 VSF_HAL_ASSERT(NULL != usart_ptr);
110 return VSF_ERR_FAIL;
111}
112
113vsf_err_t vsf_real_usart_cancel_rx(vsf_real_usart_t *usart_ptr)
114{
115 VSF_HAL_ASSERT(NULL != usart_ptr);
117 return VSF_ERR_FAIL;
118}
119
120int_fast32_t vsf_real_usart_get_rx_count(vsf_real_usart_t *usart_ptr)
121{
122 VSF_HAL_ASSERT(NULL != usart_ptr);
124 return -1;
125}
126
127vsf_err_t vsf_real_usart_request_tx(vsf_real_usart_t *usart_ptr, void *buffer_ptr, uint_fast32_t count)
128{
129 VSF_HAL_ASSERT(NULL != usart_ptr);
131 return VSF_ERR_FAIL;
132}
133
134vsf_err_t vsf_real_usart_cancel_tx(vsf_real_usart_t *usart_ptr)
135{
136 VSF_HAL_ASSERT(NULL != usart_ptr);
138 return VSF_ERR_FAIL;
139}
140
141int_fast32_t vsf_real_usart_get_tx_count(vsf_real_usart_t *usart_ptr)
142{
143 VSF_HAL_ASSERT(NULL != usart_ptr);
145 return -1;
146}
147
148#endif
149
150#if VSF_USART_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
151vsf_usart_capability_t vsf_real_usart_capability(vsf_real_usart_t *usart_ptr)
152{
153 VSF_HAL_ASSERT(NULL != usart_ptr);
154
155 vsf_usart_capability_t usart_capability = {
156 .irq_mask = VSF_USART_CFG_CAPABILITY_IRQ_MASK,
157 .max_baudrate = VSF_USART_CFG_CAPABILITY_MAX_BAUDRATE,
158 .min_baudrate = VSF_USART_CFG_CAPABILITY_MIN_BAUDRATE,
159 .txfifo_depth = VSF_USART_CFG_CAPABILITY_TXFIFO_DEPTH,
160 .rxfifo_depth = VSF_USART_CFG_CAPABILITY_RXFIFO_DEPTH,
161 .max_data_bits = VSF_USART_CFG_CAPABILITY_MAX_DATA_BITS,
162 .min_data_bits = VSF_USART_CFG_CAPABILITY_MIN_DATA_BITS,
163 .support_rx_timeout = VSF_USART_CFG_CAPABILITY_SUPPORT_RX_TIMEOUT,
164 .support_send_break = VSF_USART_CFG_CAPABILITY_SUPPORT_SEND_BREAK,
165 .support_set_and_clear_break = VSF_USART_CFG_CAPABILITY_SUPPORT_SET_AND_CLEAR_BREAK,
166 };
167
168 return usart_capability;
169}
170#endif
171
172#if VSF_USART_CFG_REIMPLEMENT_API_CTRL == DISABLED
173vsf_err_t vsf_real_usart_ctrl(vsf_real_usart_t *usart_ptr, vsf_usart_ctrl_t ctrl, void * param)
174{
175 VSF_HAL_ASSERT(NULL != usart_ptr);
176
177 // Default implementation: not supported, trigger assertion
179
180 return VSF_ERR_NOT_SUPPORT;
181}
182#endif
183
184#if VSF_USART_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
185vsf_err_t vsf_real_usart_get_configuration(vsf_real_usart_t *usart_ptr, vsf_usart_cfg_t *cfg_ptr)
186{
187 VSF_HAL_ASSERT(NULL != usart_ptr);
188 VSF_HAL_ASSERT(NULL != cfg_ptr);
189
190 // Default implementation: not supported, trigger assertion
192
193 return VSF_ERR_NOT_SUPPORT;
194}
195#endif
196
197#if VSF_USART_CFG_REIMPLEMENT_API_IRQ_CLEAR == DISABLED
198vsf_usart_irq_mask_t vsf_real_usart_irq_clear(vsf_real_usart_t *usart_ptr, vsf_usart_irq_mask_t irq_mask)
199{
200 VSF_HAL_ASSERT(NULL != usart_ptr);
201
202 // Default implementation: not supported, trigger assertion
204
205 return 0;
206}
207#endif
208
209/*============================ MACROS ========================================*/
210
211#undef VSF_USART_CFG_REIMPLEMENT_API_CAPABILITY
212#undef VSF_USART_CFG_CAPABILITY_IRQ_MASK
213#undef VSF_USART_CFG_CAPABILITY_MAX_BAUDRATE
214#undef VSF_USART_CFG_CAPABILITY_MIN_BAUDRATE
215#undef VSF_USART_CFG_CAPABILITY_TXFIFO_DEPTH
216#undef VSF_USART_CFG_CAPABILITY_RXFIFO_DEPTH
217#undef VSF_USART_CFG_CAPABILITY_MAX_DATA_BITS
218#undef VSF_USART_CFG_CAPABILITY_MIN_DATA_BITS
219#undef VSF_USART_CFG_CAPABILITY_SUPPORT_RX_TIMEOUT
220#undef VSF_USART_CFG_REIMPLEMENT_API_REQUEST
221#undef VSF_USART_CFG_REIMPLEMENT_API_CTRL
222#undef VSF_USART_CFG_REIMPLEMENT_API_GET_CONFIGURATION
223#undef VSF_USART_CFG_REIMPLEMENT_API_IRQ_CLEAR
224#undef vsf_real_usart_t
225#undef vsf_real_usart_init
226#undef vsf_real_usart_fini
227#undef vsf_real_usart_rxfifo_read
228#undef vsf_real_usart_txfifo_write
229#undef vsf_real_usart_irq_enable
230#undef vsf_real_usart_irq_disable
231#undef vsf_real_usart_request_rx
232#undef vsf_real_usart_cancel_rx
233#undef vsf_real_usart_get_rx_count
234#undef vsf_real_usart_request_tx
235#undef vsf_real_usart_cancel_tx
236#undef vsf_real_usart_get_tx_count
237#undef vsf_real_usart_capability
238#undef vsf_real_usart_ctrl
239#undef vsf_real_usart_get_configuration
240#undef vsf_real_usart_irq_clear
241#undef vsf_real_usart_tx_send_break
242
243/*============================ IMPLEMENTATION ================================*/
244/*============================ MACROS ========================================*/
245
246#ifdef VSF_USART_CFG_IMP_REMAP_PREFIX
247# define vsf_imp_usart_t VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_t)
248# define vsf_imp_usart_init VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_init)
249# define vsf_imp_usart_fini VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_fini)
250# define vsf_imp_usart_capability VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_capability)
251# define vsf_imp_usart_enable VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_enable)
252# define vsf_imp_usart_disable VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_disable)
253# define vsf_imp_usart_irq_enable VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_irq_enable)
254# define vsf_imp_usart_irq_disable VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_irq_disable)
255# define vsf_imp_usart_irq_clear VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_irq_clear)
256# define vsf_imp_usart_status VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_status)
257# define vsf_imp_usart_rxfifo_get_data_count VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_rxfifo_get_data_count)
258# define vsf_imp_usart_rxfifo_read VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_rxfifo_read)
259# define vsf_imp_usart_txfifo_get_free_count VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_txfifo_get_free_count)
260# define vsf_imp_usart_txfifo_write VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_txfifo_write)
261# define vsf_imp_usart_request_rx VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_request_rx)
262# define vsf_imp_usart_request_tx VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_request_tx)
263# define vsf_imp_usart_cancel_rx VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_cancel_rx)
264# define vsf_imp_usart_cancel_tx VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_cancel_tx)
265# define vsf_imp_usart_get_rx_count VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_get_rx_count)
266# define vsf_imp_usart_get_tx_count VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_get_tx_count)
267# define vsf_imp_usart_ctrl VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_ctrl)
268# define vsf_imp_usart_get_configuration VSF_MCONNECT(VSF_USART_CFG_IMP_PREFIX, _usart_get_configuration)
269
270# define vsf_remap_usart_t VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_t)
271# define vsf_remap_usart_init VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_init)
272# define vsf_remap_usart_fini VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_fini)
273# define vsf_remap_usart_capability VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_capability)
274# define vsf_remap_usart_enable VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_enable)
275# define vsf_remap_usart_disable VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_disable)
276# define vsf_remap_usart_irq_enable VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_irq_enable)
277# define vsf_remap_usart_irq_disable VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_irq_disable)
278# define vsf_remap_usart_irq_clear VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_irq_clear)
279# define vsf_remap_usart_status VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_status)
280# define vsf_remap_usart_rxfifo_get_data_count VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_rxfifo_get_data_count)
281# define vsf_remap_usart_rxfifo_read VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_rxfifo_read)
282# define vsf_remap_usart_txfifo_get_free_count VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_txfifo_get_free_count)
283# define vsf_remap_usart_txfifo_write VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_txfifo_write)
284# define vsf_remap_usart_request_rx VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_request_rx)
285# define vsf_remap_usart_request_tx VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_request_tx)
286# define vsf_remap_usart_cancel_rx VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_cancel_rx)
287# define vsf_remap_usart_cancel_tx VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_cancel_tx)
288# define vsf_remap_usart_get_rx_count VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_get_rx_count)
289# define vsf_remap_usart_get_tx_count VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_get_tx_count)
290# define vsf_remap_usart_ctrl VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_ctrl)
291# define vsf_remap_usart_get_configuration VSF_MCONNECT(VSF_USART_CFG_IMP_REMAP_PREFIX, _usart_get_configuration)
292# define VSF_USART_CFG_IMP_REMAP_FUNCTIONS \
293 vsf_err_t vsf_imp_usart_init(vsf_imp_usart_t *usart_ptr, vsf_usart_cfg_t *cfg_ptr) \
294 { \
295 VSF_HAL_ASSERT(usart_ptr != NULL); \
296 return vsf_remap_usart_init(usart_ptr, cfg_ptr); \
297 } \
298 void vsf_imp_usart_fini(vsf_imp_usart_t *usart_ptr) \
299 { \
300 VSF_HAL_ASSERT(usart_ptr != NULL); \
301 vsf_remap_usart_fini(usart_ptr); \
302 } \
303 fsm_rt_t vsf_imp_usart_enable(vsf_imp_usart_t *usart_ptr) \
304 { \
305 VSF_HAL_ASSERT(usart_ptr != NULL); \
306 return vsf_remap_usart_enable(usart_ptr); \
307 } \
308 fsm_rt_t vsf_imp_usart_disable(vsf_imp_usart_t *usart_ptr) \
309 { \
310 VSF_HAL_ASSERT(usart_ptr != NULL); \
311 return vsf_remap_usart_disable(usart_ptr); \
312 } \
313 void vsf_imp_usart_irq_enable(vsf_imp_usart_t *usart_ptr, vsf_usart_irq_mask_t irq_mask) \
314 { \
315 VSF_HAL_ASSERT(usart_ptr != NULL); \
316 vsf_remap_usart_irq_enable(usart_ptr, irq_mask); \
317 } \
318 void vsf_imp_usart_irq_disable(vsf_imp_usart_t *usart_ptr, vsf_usart_irq_mask_t irq_mask) \
319 { \
320 VSF_HAL_ASSERT(usart_ptr != NULL); \
321 vsf_remap_usart_irq_disable(usart_ptr, irq_mask); \
322 } \
323 vsf_usart_irq_mask_t vsf_imp_usart_irq_clear(vsf_imp_usart_t *usart_ptr, vsf_usart_irq_mask_t irq_mask) \
324 { \
325 VSF_HAL_ASSERT(usart_ptr != NULL); \
326 return vsf_remap_usart_irq_clear(usart_ptr, irq_mask); \
327 } \
328 vsf_usart_status_t vsf_imp_usart_status(vsf_imp_usart_t *usart_ptr) \
329 { \
330 VSF_HAL_ASSERT(usart_ptr != NULL); \
331 return vsf_remap_usart_status(usart_ptr); \
332 } \
333 vsf_usart_capability_t vsf_imp_usart_capability(vsf_imp_usart_t *usart_ptr) \
334 { \
335 VSF_HAL_ASSERT(usart_ptr != NULL); \
336 return vsf_remap_usart_capability(usart_ptr); \
337 } \
338 uint_fast16_t vsf_imp_usart_rxfifo_get_data_count(vsf_imp_usart_t *usart_ptr) \
339 { \
340 VSF_HAL_ASSERT(usart_ptr != NULL); \
341 return vsf_remap_usart_rxfifo_get_data_count(usart_ptr); \
342 } \
343 uint_fast16_t vsf_imp_usart_rxfifo_read(vsf_imp_usart_t *usart_ptr, void *buffer_ptr, uint_fast16_t count) \
344 { \
345 VSF_HAL_ASSERT(usart_ptr != NULL); \
346 return vsf_remap_usart_rxfifo_read(usart_ptr, buffer_ptr, count); \
347 } \
348 uint_fast16_t vsf_imp_usart_txfifo_get_free_count(vsf_imp_usart_t *usart_ptr) \
349 { \
350 VSF_HAL_ASSERT(usart_ptr != NULL); \
351 return vsf_remap_usart_txfifo_get_free_count(usart_ptr); \
352 } \
353 uint_fast16_t vsf_imp_usart_txfifo_write(vsf_imp_usart_t *usart_ptr, void *buffer_ptr, uint_fast16_t count) \
354 { \
355 VSF_HAL_ASSERT(usart_ptr != NULL); \
356 return vsf_remap_usart_txfifo_write(usart_ptr, buffer_ptr, count); \
357 } \
358 vsf_err_t vsf_imp_usart_request_rx(vsf_imp_usart_t *usart_ptr, void *buffer_ptr, uint_fast32_t count) \
359 { \
360 VSF_HAL_ASSERT(usart_ptr != NULL); \
361 return vsf_remap_usart_request_rx(usart_ptr, buffer_ptr, count); \
362 } \
363 vsf_err_t vsf_imp_usart_request_tx(vsf_imp_usart_t *usart_ptr, void *buffer_ptr, uint_fast32_t count) \
364 { \
365 VSF_HAL_ASSERT(usart_ptr != NULL); \
366 return vsf_remap_usart_request_tx(usart_ptr, buffer_ptr, count); \
367 } \
368 vsf_err_t vsf_imp_usart_cancel_rx(vsf_imp_usart_t *usart_ptr) \
369 { \
370 VSF_HAL_ASSERT(usart_ptr != NULL); \
371 return vsf_remap_usart_cancel_rx(usart_ptr); \
372 } \
373 vsf_err_t vsf_imp_usart_cancel_tx(vsf_imp_usart_t *usart_ptr) \
374 { \
375 VSF_HAL_ASSERT(usart_ptr != NULL); \
376 return vsf_remap_usart_cancel_tx(usart_ptr); \
377 } \
378 int_fast32_t vsf_imp_usart_get_rx_count(vsf_imp_usart_t *usart_ptr) \
379 { \
380 VSF_HAL_ASSERT(usart_ptr != NULL); \
381 return vsf_remap_usart_get_rx_count(usart_ptr); \
382 } \
383 int_fast32_t vsf_imp_usart_get_tx_count(vsf_imp_usart_t *usart_ptr) \
384 { \
385 VSF_HAL_ASSERT(usart_ptr != NULL); \
386 return vsf_remap_usart_get_tx_count(usart_ptr); \
387 } \
388 vsf_err_t vsf_imp_usart_ctrl(vsf_imp_usart_t *usart_ptr, vsf_usart_ctrl_t ctrl, void *param) \
389 { \
390 VSF_HAL_ASSERT(usart_ptr != NULL); \
391 return vsf_remap_usart_ctrl(usart_ptr, ctrl, param); \
392 } \
393 vsf_err_t vsf_imp_usart_get_configuration(vsf_imp_usart_t *usart_ptr, vsf_usart_cfg_t *cfg_ptr) \
394 { \
395 VSF_HAL_ASSERT(usart_ptr != NULL); \
396 VSF_HAL_ASSERT(cfg_ptr != NULL); \
397 return vsf_remap_usart_get_configuration(usart_ptr, cfg_ptr); \
398 }
399#endif
400
401/*============================ GLOBAL VARIABLES ==============================*/
402
403#define VSF_HAL_TEMPLATE_IMP_NAME _usart
404#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _USART
405
406#if !defined(VSF_USART_CFG_IMP_PREFIX) && !defined(VSF_USART_CFG_IMP_DEVICE_PREFIX)
407# error "Please define VSF_USART_CFG_IMP_PREFIX in usart driver"
408#endif
409
410#if !defined(VSF_USART_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_USART_CFG_IMP_DEVICE_UPCASE_PREFIX)
411# error "Please define VSF_USART_CFG_IMP_UPCASE_PREFIX in usart driver"
412#endif
413
414#ifndef VSF_USART_CFG_IMP_COUNT_MASK_PREFIX
415# define VSF_USART_CFG_IMP_COUNT_MASK_PREFIX VSF_USART_CFG_IMP_UPCASE_PREFIX
416#endif
417
418#ifdef VSF_USART_CFG_IMP_REMAP_FUNCTIONS
419# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_USART_CFG_IMP_REMAP_FUNCTIONS
420#endif
421
423
424#undef VSF_USART_CFG_IMP_PREFIX
425#undef VSF_USART_CFG_IMP_COUNT_MASK_PREFIX
426#undef VSF_USART_CFG_IMP_UPCASE_PREFIX
427#undef VSF_USART_CFG_IMP_DEVICE_PREFIX
428#undef VSF_USART_CFG_IMP_DEVICE_UPCASE_PREFIX
429#undef VSF_USART_CFG_IMP_REMAP_PREFIX
430#undef VSF_USART_CFG_IMP_LV0
431#undef VSF_USART_CFG_IMP_REMAP_FUNCTIONS
432#undef VSF_USART_CFG_IMP_HAS_OP
433#undef VSF_USART_CFG_IMP_EXTERN_OP
434
435#undef vsf_imp_usart_t
436#undef vsf_imp_usart_init
437#undef vsf_imp_usart_fini
438#undef vsf_imp_usart_capability
439#undef vsf_imp_usart_enable
440#undef vsf_imp_usart_disable
441#undef vsf_imp_usart_irq_enable
442#undef vsf_imp_usart_irq_disable
443#undef vsf_imp_usart_irq_clear
444#undef vsf_imp_usart_status
445#undef vsf_imp_usart_rxfifo_get_data_count
446#undef vsf_imp_usart_rxfifo_read
447#undef vsf_imp_usart_txfifo_get_free_count
448#undef vsf_imp_usart_txfifo_write
449#undef vsf_imp_usart_request_rx
450#undef vsf_imp_usart_request_tx
451#undef vsf_imp_usart_cancel_rx
452#undef vsf_imp_usart_cancel_tx
453#undef vsf_imp_usart_get_rx_count
454#undef vsf_imp_usart_get_tx_count
455#undef vsf_imp_usart_ctrl
456#undef vsf_imp_usart_get_configuration
457#undef vsf_imp_usart_tx_send_break
458
459#undef vsf_remap_usart_t
460#undef vsf_remap_usart_init
461#undef vsf_remap_usart_fini
462#undef vsf_remap_usart_capability
463#undef vsf_remap_usart_enable
464#undef vsf_remap_usart_disable
465#undef vsf_remap_usart_irq_enable
466#undef vsf_remap_usart_irq_disable
467#undef vsf_remap_usart_irq_clear
468#undef vsf_remap_usart_status
469#undef vsf_remap_usart_rxfifo_get_data_count
470#undef vsf_remap_usart_rxfifo_read
471#undef vsf_remap_usart_txfifo_get_free_count
472#undef vsf_remap_usart_txfifo_write
473#undef vsf_remap_usart_request_rx
474#undef vsf_remap_usart_request_tx
475#undef vsf_remap_usart_cancel_rx
476#undef vsf_remap_usart_cancel_tx
477#undef vsf_remap_usart_get_rx_count
478#undef vsf_remap_usart_get_tx_count
479#undef vsf_remap_usart_ctrl
480#undef vsf_remap_usart_get_configuration
481#undef vsf_remap_usart_tx_send_break
482
483#endif /* VSF_HAL_USE_USART */
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
@ VSF_ERR_FAIL
failed
Definition __type.h:51
vsf_usart_irq_mask_t
Definition uart.h:106
#define NULL
Definition lvgl.h:26
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
unsigned int uint_fast32_t
Definition stdint.h:27
int int_fast32_t
Definition stdint.h:26
USART capability structure Defines the hardware capabilities and limitations of the USART interface.
Definition vsf_template_usart.h:955
vsf_usart_irq_mask_t irq_mask
Definition usart.h:387
USART configuration structure Contains all parameters needed to initialize and configure a USART inst...
Definition vsf_template_usart.h:843
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
vsf_usart_ctrl_t
USART control commands Defines the available control operations for USART instances.
Definition vsf_template_usart.h:863
Generated from commit: vsfteam/vsf@3f091ef