VSF Documented
vsf_template_instance_implementation.h
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/*============================ MACROFIED FUNCTIONS ===========================*/
19/*============================ PROTOTYPES ====================================*/
20/*============================ LOCAL VARIABLES ===============================*/
21
22// Here's an example showing the complete configuration pattern:
23
24// 1. In your device.h file, define hardware-specific parameters:
25// device.h
26// #define VSF_HW_SPI_COUNT 4 // Total number of SPI instances available
27// #define VSF_HW_SPI0_IRQN SPI0_IRQn // Interrupt number for SPI0
28// #define VSF_HW_SPI0_IRQHandler SPI0_Handler // Handler function for SPI0 interrupts
29// ...
30
31// 2. In your implementation file (e.g., spi.c), configure the implementation prefixes:
32// spi.c
33// # define VSF_SPI_CFG_IMP_PREFIX vsf_hw // Lowercase prefix for functions and variables
34// # define VSF_SPI_CFG_IMP_UPCASE_PREFIX VSF_HW // Uppercase prefix for macros
35//
36// The following definitions are optional and only needed when dealing with special peripherals
37// (e.g., when you need QSPI instead of standard SPI):
38// # define VSF_SPI_CFG_IMP_RENAME_DEVICE_PREFIX ENABLED // Enable renaming device prefix
39// # define VSF_SPI_CFG_IMP_DEVICE_PREFIX vsf_hw_qspi // Custom device prefix when renaming
40// # define VSF_SPI_CFG_IMP_DEVICE_UPCASE_PREFIX VSF_HW_QSPI // Uppercase version of custom device prefix
41
42// 3. In the template include file (e.g., spi_template.inc), define the component name:
43// spi_template.inc
44// #define VSF_HAL_TEMPLATE_IMP_NAME _spi // Component name in lowercase with leading underscore
45// #define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _SPI // Component name in uppercase with leading underscore
46
47// These configurations work together to create appropriately named instances and functions.
48// For example, with the above configuration, you'll get:
49// - Instance names like vsf_hw_qspi0, vsf_hw_qspi1, etc.
50// - Arrays like vsf_hw_qspi_devices[], vsf_hw_qspi_names[], etc.
51// - The template handles all the repetitive implementation details automatically.
52
53/**************************** prefex *******************************************/
54
55// VSF_HAL_TEMPLATE_IMP_RENAME_DEVICE_PREFIX -> VSF_SPI_CFG_IMP_RENAME_DEVICE_PREFIX -> ENABLED or DISABLED
56#ifndef VSF_HAL_TEMPLATE_IMP_RENAME_DEVICE_PREFIX
57# define VSF_HAL_TEMPLATE_IMP_RENAME_DEVICE_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_RENAME_DEVICE_PREFIX)
58#endif
59
60// VSF_HAL_TEMPLATE_IMP_UPCASE_PREFIX -> VSF_SPI_CFG_IMP_UPCASE_PREFIX -> VSF_HW
61#ifndef VSF_HAL_TEMPLATE_IMP_UPCASE_PREFIX
62# define VSF_HAL_TEMPLATE_IMP_UPCASE_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_UPCASE_PREFIX)
63#endif
64
65#ifndef VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX
66# if VSF_HAL_TEMPLATE_IMP_RENAME_DEVICE_PREFIX == ENABLED
67# define VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_DEVICE_PREFIX)
68# else
69# define __VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_PREFIX)
70# define VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX VSF_MCONNECT(__VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, VSF_HAL_TEMPLATE_IMP_NAME)
71# endif
72#endif
73
74// VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX -> VSF_SPI_CFG_IMP_COUNT_MASK_PREFIX -> VSF_HW
75#ifndef VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX
76# if VSF_HAL_TEMPLATE_IMP_RENAME_DEVICE_PREFIX == ENABLED
77# define VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_DEVICE_UPCASE_PREFIX)
78# else
79# define __VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_COUNT_MASK_PREFIX)
80# define VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX VSF_MCONNECT(__VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME)
81# endif
82#endif
83
84// VSF_HAL_TEMPLATE_IMP_INSTANCE_PREFIX -> VSF_SPI_CFG_IMP_PREFIX -> vsf_hw
85#ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_PREFIX
86# define VSF_HAL_TEMPLATE_IMP_INSTANCE_PREFIX VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX
87#endif
88
89/**************************** remap ********************************************/
90
91#ifdef VSF_HAL_CFG_IMP_REMAP_FUNCTIONS
92VSF_HAL_CFG_IMP_REMAP_FUNCTIONS
93#endif
94
95/**************************** instance op **************************************/
96
97#ifndef VSF_HAL_TEMPLATE_IMP_MULTI_CLASS
98// VSF_HAL_TEMPLATE_IMP_MULTI_CLASS -> VSF_HW_SPI_CFG_MULTI_CLASS
99# define VSF_HAL_TEMPLATE_IMP_MULTI_CLASS VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_UPCASE_PREFIX, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_MULTI_CLASS)
100#endif
101
102#if VSF_HAL_TEMPLATE_IMP_MULTI_CLASS == ENABLED
103// VSF_HAL_TEMPLATE_IMP_OP -> VSF_HW_SPI_CFG_IMP_HAS_OP
104# ifndef VSF_HAL_TEMPLATE_IMP_HAS_OP
105# define VSF_HAL_TEMPLATE_IMP_HAS_OP VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_HAS_OP)
106# endif
107# if VSF_HAL_TEMPLATE_IMP_HAS_OP
108// VSF_HAL_TEMPLATE_IMP_OP_VAR -> vsf_hw_spi_op
109# define VSF_HAL_TEMPLATE_IMP_OP_VAR VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _op)
110// VSF_HAL_TEMPLATE_IMP_OP -> .vsf_hw_spi.op = & vsf_hw_spi_op
111# define VSF_HAL_TEMPLATE_IMP_OP .VSF_MCONNECT(vsf, VSF_HAL_TEMPLATE_IMP_NAME).op = & VSF_HAL_TEMPLATE_IMP_OP_VAR,
112# else
113# ifndef VSF_HAL_TEMPLATE_IMP_EXTERN_OP
114// VSF_HAL_TEMPLATE_IMP_EXTERN_OP -> VSF_SPI_CFG_IMP_EXTERN_OP ->
115# define VSF_HAL_TEMPLATE_IMP_EXTERN_OP VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_EXTERN_OP)
116# endif
117# if VSF_HAL_TEMPLATE_IMP_EXTERN_OP == DISABLED
118// VSF_HAL_TEMPLATE_IMP_OP_VAR -> __vsf_hw_spi_op
119# define VSF_HAL_TEMPLATE_IMP_OP_VAR VSF_MCONNECT(__, VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _op)
120# define VSF_HAL_TEMPLATE_IMP_OP_ATR static
121# else
122// VSF_HAL_TEMPLATE_IMP_OP_VAR -> vsf_hw_spi_op
123# define VSF_HAL_TEMPLATE_IMP_OP_VAR VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _op)
124# define VSF_HAL_TEMPLATE_IMP_OP_ATR
125# endif
126// VSF_HAL_TEMPLATE_IMP_OP -> .vsf_hw_spi.op = & VSF_HAL_TEMPLATE_IMP_OP_VAR
127# define VSF_HAL_TEMPLATE_IMP_OP .VSF_MCONNECT(vsf, VSF_HAL_TEMPLATE_IMP_NAME).op = & VSF_HAL_TEMPLATE_IMP_OP_VAR,
128
129# undef __VSF_HAL_TEMPLATE_API
130# define __VSF_HAL_TEMPLATE_API VSF_HAL_TEMPLATE_API_OP
131
132#ifndef VSF_HAL_TEMPLATE_IMP_OP_TYPE
133// VSF_HAL_TEMPLATE_IMP_OP_TYPE -> vsf_spi_op_t
134# define VSF_HAL_TEMPLATE_IMP_OP_TYPE VSF_MCONNECT(vsf, VSF_HAL_TEMPLATE_IMP_NAME, _op_t)
135#endif
136
137#ifndef VSF_HAL_TEMPLATE_IMP_OP_MACRO
138// VSF_HAL_TEMPLATE_IMP_OP_MACRO -> VSF_SPI_APIS
139# define VSF_HAL_TEMPLATE_IMP_OP_MACRO VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _APIS)
140#endif
141
142/*
143static const vsf_spi_op_t __vsf_hw_spi_op = {
144 .capability =
145 (vsf_spi_capability_t(*)(vsf_spi_t *)) & vsf_hw_spi_capability,
146 .port_config_pins = (vsf_err_t(*)(vsf_spi_t *, uint32_t pin_mask,
147 vsf_spi_cfg_t *cfg_ptr)) &
148 vsf_hw_spi_port_config_pins,
149 ...
150};
151 */
154};
155# endif
156#else
157# define VSF_HAL_TEMPLATE_IMP_OP
158#endif
159
160/**************************** count and mask ***********************************/
161
162#ifndef VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX
163# define VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX _COUNT
164#endif
165
166#ifndef VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX
167# define VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX _MASK
168#endif
169
170#ifndef VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT
171// VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT -> VSF_HW_SPI_COUNT -> Number(for example, 2, vsf_hw_spi0 and vsf_hw_spi1)
172# define VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX, VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX)
173#endif
174
175#ifndef VSF_HAL_TEMPLATE_IMP_DEFINED_MASK
176// VSF_HAL_TEMPLATE_IMP_DEFINED_MASK -> VSF_HW_SPI_MASK -> Number (for example, 0x05, vsf_hw_spi0 and vsf_hw_spi2)
177# define VSF_HAL_TEMPLATE_IMP_DEFINED_MASK VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX, VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX)
178#endif
179
180#if VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT || VSF_HAL_TEMPLATE_IMP_DEFINED_MASK
181# if !defined(VSF_HAL_TEMPLATE_IMP_COUNT) && VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT
182# define VSF_HAL_TEMPLATE_IMP_COUNT VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT
183# endif
184
185# if !defined(VSF_HAL_TEMPLATE_IMP_MASK) && VSF_HAL_TEMPLATE_IMP_DEFINED_MASK
186# define VSF_HAL_TEMPLATE_IMP_MASK VSF_HAL_TEMPLATE_IMP_DEFINED_MASK
187# endif
188
189# if defined(VSF_HAL_TEMPLATE_IMP_MASK) && !defined(VSF_HAL_TEMPLATE_IMP_COUNT)
190# define VSF_HAL_TEMPLATE_IMP_COUNT VSF_HAL_MASK_TO_COUNT(VSF_HAL_TEMPLATE_IMP_MASK)
191# endif
192
193# if defined(VSF_HAL_TEMPLATE_IMP_COUNT) && !defined(VSF_HAL_TEMPLATE_IMP_MASK)
194# define VSF_HAL_TEMPLATE_IMP_MASK VSF_HAL_COUNT_TO_MASK(VSF_HAL_TEMPLATE_IMP_COUNT)
195# endif
196
197/**************************** instance and array **************************************/
198
199/*
200vsf_hw_spi_t vsf_hw_spi0 = {
201 .vsf_spi.op = &__vsf_hw_spi_op,
202 ...
203};
204vsf_hw_spi_t vsf_hw_spi1 = {
205 .vsf_spi.op = &__vsf_hw_spi_op,
206 ...
207};
208 */
209# define __VSF_HAL_TEMPLATE_MASK VSF_HAL_TEMPLATE_IMP_MASK
210# define __VSF_HAL_TEMPLATE_MACRO VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_LV0)
211# define __VSF_HAL_TEMPLATE_ARG VSF_HAL_TEMPLATE_IMP_OP
213
214/**************************** instance's array *********************************/
215
216/*
217vsf_hw_spi_t *const vsf_hw_spis[2] = {
218 &vsf_hw_spi0,
219 &vsf_hw_spi1,
220};
221 */
222# if !defined(VSF_HAL_TEMPLATE_IMP_REMOVE_ARRAY)
223# ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY
224# define VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, s)
225# endif
226# ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_TYPE
227# define VSF_HAL_TEMPLATE_IMP_INSTANCE_TYPE VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _t)
228# endif
229VSF_HAL_TEMPLATE_IMP_INSTANCE_TYPE * const VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY[VSF_HAL_TEMPLATE_IMP_COUNT] = {
230# ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY_ITEM
231# define VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY_ITEM(__INDEX, __NULL) \
232 &VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, __INDEX),
233# endif
234
235# define __VSF_HAL_TEMPLATE_MASK VSF_HAL_TEMPLATE_IMP_MASK
236# define __VSF_HAL_TEMPLATE_MACRO VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY_ITEM
237# define __VSF_HAL_TEMPLATE_ARG VSF_HAL_TEMPLATE_IMP_OP
239};
240
241/*
242const uint8_t vsf_hw_spi_indexs[2] = {
243 0,
244 1,
245};
246 */
247#ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_INDEX_ARRAY
248# define VSF_HAL_TEMPLATE_IMP_INSTANCE_INDEX_ARRAY VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _indexs)
249#endif
250const uint8_t VSF_HAL_TEMPLATE_IMP_INSTANCE_INDEX_ARRAY[VSF_HAL_TEMPLATE_IMP_COUNT] = {
251# ifndef VSF_HAL_TEMPLATE_INDEX_ARRAY_ITEM
252# define VSF_HAL_TEMPLATE_INDEX_ARRAY_ITEM(__INDEX, __NULL) __INDEX,
253# endif
254# define __VSF_HAL_TEMPLATE_MASK VSF_HAL_TEMPLATE_IMP_MASK
255# define __VSF_HAL_TEMPLATE_MACRO VSF_HAL_TEMPLATE_INDEX_ARRAY_ITEM
256# define __VSF_HAL_TEMPLATE_ARG VSF_HAL_TEMPLATE_IMP_OP
258};
259
260/*
261const char *vsf_hw_spi_names[2] = {
262 "vsf_hw_spi" "0",
263 "vsf_hw_spi" "1",
264};
265 */
266#ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_NAME_ARRAY
267# define VSF_HAL_TEMPLATE_IMP_INSTANCE_NAME_ARRAY VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _names)
268#endif
269const char* VSF_HAL_TEMPLATE_IMP_INSTANCE_NAME_ARRAY[VSF_HAL_TEMPLATE_IMP_COUNT] = {
270# ifndef VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM
271# undef __VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM
272# define __VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM(__INDEX, __ARG) \
273 # __ARG #__INDEX,
274# define VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM(__INDEX, __ARG) \
275 __VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM(__INDEX, __ARG)
276# endif
277# define __VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM(__INDEX, __ARG) \
278 # __ARG #__INDEX,
279# define VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM(__INDEX, __ARG) \
280 __VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM(__INDEX, __ARG)
281# define __VSF_HAL_TEMPLATE_MASK VSF_HAL_TEMPLATE_IMP_MASK
282# define __VSF_HAL_TEMPLATE_MACRO VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM
283# define __VSF_HAL_TEMPLATE_ARG VSF_HAL_TEMPLATE_IMP_INSTANCE_PREFIX
285};
286
287/*
288const vsf_hal_device_t vsf_hw_spi_devices[2] = {
289 {
290 .pointer = &vsf_hw_spi0,
291 .name = "vsf_hw_spi" "0",
292 },
293 {
294 .pointer = &vsf_hw_spi1,
295 .name = "vsf_hw_spi" "1",
296 },
297};
298 */
299#ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY
300# define VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _devices)
301#endif
302const vsf_hal_device_t VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY[VSF_HAL_TEMPLATE_IMP_COUNT] = {
303# define __VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY_ITEM(__INDEX, __ARG)\
304 { .pointer = &VSF_MCONNECT(__ARG, __INDEX), .name = # __ARG #__INDEX, },
305# define VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY_ITEM(__INDEX, __ARG) \
306 __VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY_ITEM(__INDEX, __ARG)
307# define __VSF_HAL_TEMPLATE_MASK VSF_HAL_TEMPLATE_IMP_MASK
308# define __VSF_HAL_TEMPLATE_MACRO VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY_ITEM
309# define __VSF_HAL_TEMPLATE_ARG VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX)
311};
312# endif
313#endif
314
315/**************************** undef ********************************************/
316
317#undef __VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX
318#undef VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX
319#undef __VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX
320#undef VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX
321
322#undef VSF_HAL_TEMPLATE_IMP_RENAME_LV0_PREFIX
323#undef VSF_HAL_TEMPLATE_IMP_RENAME_DEVICE_PREFIX
324#undef VSF_HAL_TEMPLATE_IMP_NAME
325#undef VSF_HAL_TEMPLATE_IMP_UPCASE_NAME
326#undef VSF_HAL_TEMPLATE_IMP_INSTANCE_PREFIX
327#undef VSF_HAL_TEMPLATE_IMP_UPCASE_PREFIX
328#undef VSF_HAL_TEMPLATE_IMP_REMAP_PREFIX
329#undef VSF_HAL_TEMPLATE_IMP_INSTANCE_TYPE
330#undef VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY
331#undef VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY_ITEM
332#undef VSF_HAL_TEMPLATE_INDEX_ARRAY_ITEM
333#undef VSF_HAL_TEMPLATE_IMP_INSTANCE_INDEX_ARRAY
334#undef VSF_HAL_TEMPLATE_IMP_INSTANCE_NAME_ARRAY
335#undef VSF_HAL_TEMPLATE_IMP_EXTERN_OP
336#undef VSF_HAL_TEMPLATE_IMP_COUNT
337#undef VSF_HAL_TEMPLATE_IMP_MASK
338#undef VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX
339#undef VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX
340#undef VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX
341#undef VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT
342#undef VSF_HAL_TEMPLATE_IMP_DEFINED_MASK
343#undef VSF_HAL_TEMPLATE_IMP_LV0
344#undef VSF_HAL_TEMPLATE_IMP_MULTI_CLASS
345#undef VSF_HAL_TEMPLATE_IMP_HAS_OP
346#undef VSF_HAL_TEMPLATE_IMP_OP_TYPE
347#undef VSF_HAL_TEMPLATE_IMP_OP_MACRO
348#undef VSF_HAL_TEMPLATE_IMP_OP_VAR
349#undef VSF_HAL_TEMPLATE_IMP_OP
350#undef VSF_HAL_TEMPLATE_IMP_REMOVE_ARRAY
351#undef VSF_HAL_TEMPLATE_IMP_OP_ATR
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_hal_driver.h:183
#define VSF_HAL_TEMPLATE_IMP_OP_VAR
Definition vsf_template_instance_implementation.h:119
#define VSF_HAL_TEMPLATE_IMP_OP_MACRO
Definition vsf_template_instance_implementation.h:139
#define VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX
Definition vsf_template_instance_implementation.h:67
#define VSF_HAL_TEMPLATE_IMP_OP_ATR
Definition vsf_template_instance_implementation.h:120
#define VSF_HAL_TEMPLATE_IMP_OP_TYPE
Definition vsf_template_instance_implementation.h:134
Generated from commit: vsfteam/vsf@3f519a5