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)
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)
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)
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)
74#ifndef VSF_HAL_TEMPLATE_IMP_DEVICE_UPCASE_PREFIX
75# if VSF_HAL_TEMPLATE_IMP_RENAME_DEVICE_PREFIX == ENABLED
76# define VSF_HAL_TEMPLATE_IMP_DEVICE_UPCASE_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_DEVICE_UPCASE_PREFIX)
78# define __VSF_HAL_TEMPLATE_IMP_DEVICE_UPCASE_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_UPCASE_PREFIX)
79# define VSF_HAL_TEMPLATE_IMP_DEVICE_UPCASE_PREFIX VSF_MCONNECT(__VSF_HAL_TEMPLATE_IMP_DEVICE_UPCASE_PREFIX, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME)
84#ifndef VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX
85# if VSF_HAL_TEMPLATE_IMP_RENAME_DEVICE_PREFIX == ENABLED
86# define VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_DEVICE_UPCASE_PREFIX)
88# define __VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_COUNT_MASK_PREFIX)
89# define VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX VSF_MCONNECT(__VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME)
94#ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_PREFIX
95# define VSF_HAL_TEMPLATE_IMP_INSTANCE_PREFIX VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX
100#ifdef VSF_HAL_CFG_IMP_REMAP_FUNCTIONS
101VSF_HAL_CFG_IMP_REMAP_FUNCTIONS
106#ifndef VSF_HAL_TEMPLATE_IMP_MULTI_CLASS
108# if VSF_HAL_TEMPLATE_IMP_RENAME_DEVICE_PREFIX == ENABLED
110# define VSF_HAL_TEMPLATE_IMP_MULTI_CLASS VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_UPCASE_PREFIX, _CFG_MULTI_CLASS)
113# define VSF_HAL_TEMPLATE_IMP_MULTI_CLASS VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_UPCASE_PREFIX, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_MULTI_CLASS)
117#if VSF_HAL_TEMPLATE_IMP_MULTI_CLASS == ENABLED
119# ifndef VSF_HAL_TEMPLATE_IMP_HAS_OP
120# define VSF_HAL_TEMPLATE_IMP_HAS_OP VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_HAS_OP)
122# if VSF_HAL_TEMPLATE_IMP_HAS_OP
124# define VSF_HAL_TEMPLATE_IMP_OP_VAR VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _op)
126# define VSF_HAL_TEMPLATE_IMP_OP .VSF_MCONNECT(vsf, VSF_HAL_TEMPLATE_IMP_NAME).op = &VSF_HAL_TEMPLATE_IMP_OP_VAR,
128# ifndef VSF_HAL_TEMPLATE_IMP_EXTERN_OP
130# define VSF_HAL_TEMPLATE_IMP_EXTERN_OP VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_EXTERN_OP)
132# if VSF_HAL_TEMPLATE_IMP_EXTERN_OP == DISABLED
134# define VSF_HAL_TEMPLATE_IMP_OP_VAR VSF_MCONNECT(__, VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _op)
135# define VSF_HAL_TEMPLATE_IMP_OP_ATR static
138# define VSF_HAL_TEMPLATE_IMP_OP_VAR VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _op)
139# define VSF_HAL_TEMPLATE_IMP_OP_ATR
142# define VSF_HAL_TEMPLATE_IMP_OP .VSF_MCONNECT(vsf, VSF_HAL_TEMPLATE_IMP_NAME).op = &VSF_HAL_TEMPLATE_IMP_OP_VAR,
144# undef __VSF_HAL_TEMPLATE_API
145# define __VSF_HAL_TEMPLATE_API VSF_HAL_TEMPLATE_API_OP
147#ifndef VSF_HAL_TEMPLATE_IMP_OP_TYPE
149# define VSF_HAL_TEMPLATE_IMP_OP_TYPE VSF_MCONNECT(vsf, VSF_HAL_TEMPLATE_IMP_NAME, _op_t)
152#ifndef VSF_HAL_TEMPLATE_IMP_OP_MACRO
154# define VSF_HAL_TEMPLATE_IMP_OP_MACRO VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _APIS)
182# define VSF_HAL_TEMPLATE_IMP_OP
187#ifndef VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX
188# define VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX _COUNT
191#ifndef VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX
192# define VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX _MASK
195#ifndef VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT
197# define VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX, VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX)
200#ifndef VSF_HAL_TEMPLATE_IMP_DEFINED_MASK
202# define VSF_HAL_TEMPLATE_IMP_DEFINED_MASK VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX, VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX)
205#if VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT || VSF_HAL_TEMPLATE_IMP_DEFINED_MASK
206# if !defined(VSF_HAL_TEMPLATE_IMP_COUNT) && VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT
207# define VSF_HAL_TEMPLATE_IMP_COUNT VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT
210# if !defined(VSF_HAL_TEMPLATE_IMP_MASK) && VSF_HAL_TEMPLATE_IMP_DEFINED_MASK
211# define VSF_HAL_TEMPLATE_IMP_MASK VSF_HAL_TEMPLATE_IMP_DEFINED_MASK
214# if defined(VSF_HAL_TEMPLATE_IMP_MASK) && !defined(VSF_HAL_TEMPLATE_IMP_COUNT)
215# define VSF_HAL_TEMPLATE_IMP_COUNT VSF_HAL_MASK_TO_COUNT(VSF_HAL_TEMPLATE_IMP_MASK)
218# if defined(VSF_HAL_TEMPLATE_IMP_COUNT) && !defined(VSF_HAL_TEMPLATE_IMP_MASK)
219# define VSF_HAL_TEMPLATE_IMP_MASK VSF_HAL_COUNT_TO_MASK(VSF_HAL_TEMPLATE_IMP_COUNT)
234# define __VSF_HAL_TEMPLATE_MASK VSF_HAL_TEMPLATE_IMP_MASK
235# define __VSF_HAL_TEMPLATE_MACRO VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_IMP_UPCASE_NAME, _CFG_IMP_LV0)
236# define __VSF_HAL_TEMPLATE_ARG VSF_HAL_TEMPLATE_IMP_OP
247# if !defined(VSF_HAL_TEMPLATE_IMP_REMOVE_ARRAY)
248# ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY
249# define VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, s)
251# ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_TYPE
252# define VSF_HAL_TEMPLATE_IMP_INSTANCE_TYPE VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _t)
254VSF_HAL_TEMPLATE_IMP_INSTANCE_TYPE *
const VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY[VSF_HAL_TEMPLATE_IMP_COUNT] = {
255# ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY_ITEM
256# define VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY_ITEM(__INDEX, __NULL) \
257 &VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, __INDEX),
260# define __VSF_HAL_TEMPLATE_MASK VSF_HAL_TEMPLATE_IMP_MASK
261# define __VSF_HAL_TEMPLATE_MACRO VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY_ITEM
262# define __VSF_HAL_TEMPLATE_ARG VSF_HAL_TEMPLATE_IMP_OP
272#ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_INDEX_ARRAY
273# define VSF_HAL_TEMPLATE_IMP_INSTANCE_INDEX_ARRAY VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _indexs)
275const uint8_t VSF_HAL_TEMPLATE_IMP_INSTANCE_INDEX_ARRAY[VSF_HAL_TEMPLATE_IMP_COUNT] = {
276# ifndef VSF_HAL_TEMPLATE_INDEX_ARRAY_ITEM
277# define VSF_HAL_TEMPLATE_INDEX_ARRAY_ITEM(__INDEX, __NULL) __INDEX,
279# define __VSF_HAL_TEMPLATE_MASK VSF_HAL_TEMPLATE_IMP_MASK
280# define __VSF_HAL_TEMPLATE_MACRO VSF_HAL_TEMPLATE_INDEX_ARRAY_ITEM
281# define __VSF_HAL_TEMPLATE_ARG VSF_HAL_TEMPLATE_IMP_OP
291#ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_NAME_ARRAY
292# define VSF_HAL_TEMPLATE_IMP_INSTANCE_NAME_ARRAY VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _names)
294const char* VSF_HAL_TEMPLATE_IMP_INSTANCE_NAME_ARRAY[VSF_HAL_TEMPLATE_IMP_COUNT] = {
295# ifndef VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM
296# undef __VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM
297# define __VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM(__INDEX, __ARG) \
299# define VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM(__INDEX, __ARG) \
300 __VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM(__INDEX, __ARG)
302# define __VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM(__INDEX, __ARG) \
304# define VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM(__INDEX, __ARG) \
305 __VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM(__INDEX, __ARG)
306# define __VSF_HAL_TEMPLATE_MASK VSF_HAL_TEMPLATE_IMP_MASK
307# define __VSF_HAL_TEMPLATE_MACRO VSF_HAL_TEMPLATE_IMP_NAME_ARRAY_ITEM
308# define __VSF_HAL_TEMPLATE_ARG VSF_HAL_TEMPLATE_IMP_INSTANCE_PREFIX
324#ifndef VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY
325# define VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX, _devices)
327const vsf_hal_device_t VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY[VSF_HAL_TEMPLATE_IMP_COUNT] = {
328# define __VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY_ITEM(__INDEX, __ARG)\
329 { .pointer = &VSF_MCONNECT(__ARG, __INDEX), .name = # __ARG #__INDEX, },
330# define VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY_ITEM(__INDEX, __ARG) \
331 __VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY_ITEM(__INDEX, __ARG)
332# define __VSF_HAL_TEMPLATE_MASK VSF_HAL_TEMPLATE_IMP_MASK
333# define __VSF_HAL_TEMPLATE_MACRO VSF_HAL_TEMPLATE_IMP_INSTANCE_DEVICE_ARRAY_ITEM
334# define __VSF_HAL_TEMPLATE_ARG VSF_MCONNECT(VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX)
342#undef __VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX
343#undef VSF_HAL_TEMPLATE_IMP_DEVICE_PREFIX
344#undef __VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX
345#undef VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX
347#undef VSF_HAL_TEMPLATE_IMP_RENAME_LV0_PREFIX
348#undef VSF_HAL_TEMPLATE_IMP_RENAME_DEVICE_PREFIX
349#undef VSF_HAL_TEMPLATE_IMP_NAME
350#undef VSF_HAL_TEMPLATE_IMP_UPCASE_NAME
351#undef VSF_HAL_TEMPLATE_IMP_INSTANCE_PREFIX
352#undef VSF_HAL_TEMPLATE_IMP_UPCASE_PREFIX
353#undef VSF_HAL_TEMPLATE_IMP_REMAP_PREFIX
354#undef VSF_HAL_TEMPLATE_IMP_INSTANCE_TYPE
355#undef VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY
356#undef VSF_HAL_TEMPLATE_IMP_INSTANCE_ARRAY_ITEM
357#undef VSF_HAL_TEMPLATE_INDEX_ARRAY_ITEM
358#undef VSF_HAL_TEMPLATE_IMP_INSTANCE_INDEX_ARRAY
359#undef VSF_HAL_TEMPLATE_IMP_INSTANCE_NAME_ARRAY
360#undef VSF_HAL_TEMPLATE_IMP_EXTERN_OP
361#undef VSF_HAL_TEMPLATE_IMP_COUNT
362#undef VSF_HAL_TEMPLATE_IMP_MASK
363#undef VSF_HAL_TEMPLATE_IMP_COUNT_MASK_PREFIX
364#undef VSF_HAL_TEMPLATE_IMP_COUNT_SUFFIX
365#undef VSF_HAL_TEMPLATE_IMP_MASK_SUFFIX
366#undef VSF_HAL_TEMPLATE_IMP_DEFINED_COUNT
367#undef VSF_HAL_TEMPLATE_IMP_DEFINED_MASK
368#undef VSF_HAL_TEMPLATE_IMP_LV0
369#undef VSF_HAL_TEMPLATE_IMP_MULTI_CLASS
370#undef VSF_HAL_TEMPLATE_IMP_HAS_OP
371#undef VSF_HAL_TEMPLATE_IMP_OP_TYPE
372#undef VSF_HAL_TEMPLATE_IMP_OP_MACRO
373#undef VSF_HAL_TEMPLATE_IMP_OP_VAR
374#undef VSF_HAL_TEMPLATE_IMP_OP
375#undef VSF_HAL_TEMPLATE_IMP_REMOVE_ARRAY
376#undef VSF_HAL_TEMPLATE_IMP_OP_ATR
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_hal_driver.h:184
#define VSF_HAL_TEMPLATE_IMP_OP_VAR
Definition vsf_template_instance_implementation.h:134
#define VSF_HAL_TEMPLATE_IMP_OP_MACRO
Definition vsf_template_instance_implementation.h:154
#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:135
#define VSF_HAL_TEMPLATE_IMP_OP_TYPE
Definition vsf_template_instance_implementation.h:149