VSF Documented
vsf_template_instance_declaration.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 DEClied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18// for example:
19// #define VSF_HAL_TEMPLATE_DEC_PREFIX vsf_hw
20// #define VSF_HAL_TEMPLATE_DEC_UPCASE_PREFIX VSF_HW
21// #define VSF_HAL_TEMPLATE_DEC_NAME adc
22// #define VSF_HAL_TEMPLATE_DEC_UPCASE_NAME ADC
23
24/**************************** prefex *******************************************/
25
26#ifndef VSF_HAL_TEMPLATE_DEC_PREFIX
27# define VSF_HAL_TEMPLATE_DEC_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_DEC_UPCASE_NAME, _CFG_DEC_PREFIX)
28#endif
29
30#ifndef VSF_HAL_TEMPLATE_DEC_REMAP_PREFIX
31# define VSF_HAL_TEMPLATE_DEC_REMAP_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_DEC_UPCASE_NAME, _CFG_DEC_REMAP_PREFIX)
32#endif
33
34#ifndef VSF_HAL_CFG_DEC_COUNT_MASK_PREFIX
35# define VSF_HAL_CFG_DEC_COUNT_MASK_PREFIX VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_DEC_UPCASE_NAME, _CFG_DEC_COUNT_MASK_PREFIX)
36#endif
37
38/**************************** remap declaration ********************************/
39
40#ifndef VSF_HAL_TEMPLATE_DEC_REMAP_TYPE
41# define VSF_HAL_TEMPLATE_DEC_REMAP_TYPE VSF_MCONNECT(VSF_HAL_TEMPLATE_DEC_REMAP_PREFIX, VSF_HAL_TEMPLATE_DEC_NAME, _t)
42#endif
43#ifndef VSF_HAL_TEMPLATE_DEC_TYPE
44# define VSF_HAL_TEMPLATE_DEC_TYPE VSF_MCONNECT(VSF_HAL_TEMPLATE_DEC_PREFIX, VSF_HAL_TEMPLATE_DEC_NAME, _t)
45#endif
46// expand to:
47// typedef vsf_xxx_adc_t vsf_xxx_adc_t;
49
50/**************************** instance declaration ********************************/
51
52
53#ifndef VSF_HAL_TEMPLATE_DEC_INSTANCE_API
54# define VSF_HAL_TEMPLATE_DEC_INSTANCE_API VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_DEC_UPCASE_NAME, _APIS)
55#endif
56#undef __VSF_HAL_TEMPLATE_API
57#define __VSF_HAL_TEMPLATE_API VSF_HAL_TEMPLATE_API_EXTERN
58/*
59extern vsf_gpio_capability_t vsf_hw_gpio_capability(vsf_hw_gpio_t *gpio_ptr);
60extern vsf_err_t vsf_hw_gpio_port_config_pins(vsf_hw_gpio_t *gpio_ptr,
61 uint32_t pin_mask,
62 vsf_gpio_cfg_t *cfg_ptr);
63extern void vsf_hw_gpio_set_direction(vsf_hw_gpio_t *gpio_ptr,
64 uint32_t pin_mask,
65 uint32_t direction_mask);
66 */
68
69#ifdef VSF_HAL_TEMPLATE_DEC_ADDITIONAL_API
70# ifndef VSF_HAL_TEMPLATE_DEC_INSTANCE_ADDITIONAL_API
71# define VSF_HAL_TEMPLATE_DEC_INSTANCE_ADDITIONAL_API VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_DEC_UPCASE_NAME, _ADDITIONAL_APIS)
72# endif
73VSF_HAL_TEMPLATE_DEC_INSTANCE_ADDITIONAL_API(VSF_HAL_TEMPLATE_DEC_PREFIX)
74#endif
75
76/**************************** multi class op ***********************************/
77
78#ifndef VSF_HAL_TEMPLATE_DEC_EXTERN_OP
79# define VSF_HAL_TEMPLATE_DEC_EXTERN_OP VSF_MCONNECT(VSF, VSF_HAL_TEMPLATE_DEC_UPCASE_NAME, _CFG_DEC_EXTERN_OP)
80#endif
81
82#if VSF_HAL_TEMPLATE_DEC_EXTERN_OP == ENABLED
83# ifndef VSF_HAL_TEMPLATE_DEC_INSTANCE_OP_TYPE
84# define VSF_HAL_TEMPLATE_DEC_INSTANCE_OP_TYPE VSF_MCONNECT(vsf, VSF_HAL_TEMPLATE_DEC_NAME, _op_t)
85# endif
86# ifndef VSF_HAL_TEMPLATE_DEC_INSTANCE_OP_INSTANCE
87# define VSF_HAL_TEMPLATE_DEC_INSTANCE_OP_INSTANCE VSF_MCONNECT(VSF_HAL_TEMPLATE_DEC_PREFIX, VSF_HAL_TEMPLATE_DEC_NAME, _op)
88# endif
89/*
90extern vsf_gpio_op_t vsf_hw_gpio_op;
91 */
93#endif
94
95/**************************** instance declaration *****************************/
96
97#ifndef VSF_HAL_TEMPLATE_DEC_INSTANCE_TYPE
98# define VSF_HAL_TEMPLATE_DEC_INSTANCE_TYPE VSF_MCONNECT(VSF_HAL_TEMPLATE_DEC_PREFIX, VSF_HAL_TEMPLATE_DEC_NAME, _t)
99#endif
100
101#ifndef VSF_HAL_TEMPLATE_DEC_LV0
102# define VSF_HAL_TEMPLATE_DEC_INSTACE(__IDX, __DONT_CARE) \
103 extern VSF_HAL_TEMPLATE_DEC_INSTANCE_TYPE VSF_MCONNECT(VSF_HAL_TEMPLATE_DEC_PREFIX, VSF_HAL_TEMPLATE_DEC_NAME, __IDX);
104# define VSF_HAL_TEMPLATE_DEC_LV0 VSF_HAL_TEMPLATE_DEC_INSTACE
105#endif
106
107#ifndef VSF_HAL_TEMPLATE_DEC_COUNT_SUFFIX
108# define VSF_HAL_TEMPLATE_DEC_COUNT_SUFFIX _COUNT
109#endif
110
111#ifndef VSF_HAL_TEMPLATE_DEC_MASK_SUFFIX
112# define VSF_HAL_TEMPLATE_DEC_MASK_SUFFIX _MASK
113#endif
114
115#ifndef VSF_HAL_TEMPLATE_DEC_DEFINED_COUNT
116# define VSF_HAL_TEMPLATE_DEC_DEFINED_COUNT VSF_MCONNECT(VSF_HAL_CFG_DEC_COUNT_MASK_PREFIX, VSF_HAL_TEMPLATE_DEC_UPCASE_NAME, VSF_HAL_TEMPLATE_DEC_COUNT_SUFFIX)
117#endif
118
119#ifndef VSF_HAL_TEMPLATE_DEC_DEFINED_MASK
120# define VSF_HAL_TEMPLATE_DEC_DEFINED_MASK VSF_MCONNECT(VSF_HAL_CFG_DEC_COUNT_MASK_PREFIX, VSF_HAL_TEMPLATE_DEC_UPCASE_NAME, VSF_HAL_TEMPLATE_DEC_MASK_SUFFIX)
121#endif
122
123#if !defined(VSF_HAL_TEMPLATE_DEC_COUNT) && VSF_HAL_TEMPLATE_DEC_DEFINED_COUNT
124# define VSF_HAL_TEMPLATE_DEC_COUNT VSF_HAL_TEMPLATE_DEC_DEFINED_COUNT
125#endif
126
127#if !defined(VSF_HAL_TEMPLATE_DEC_MASK) && VSF_HAL_TEMPLATE_DEC_DEFINED_MASK
128# define VSF_HAL_TEMPLATE_DEC_MASK VSF_HAL_TEMPLATE_DEC_DEFINED_MASK
129#endif
130
131#if defined(VSF_HAL_TEMPLATE_DEC_MASK) && !defined(VSF_HAL_TEMPLATE_DEC_COUNT)
132# define VSF_HAL_TEMPLATE_DEC_COUNT VSF_HAL_MASK_TO_COUNT(VSF_HAL_TEMPLATE_DEC_MASK)
133#endif
134
135#if defined(VSF_HAL_TEMPLATE_DEC_COUNT) && !defined(VSF_HAL_TEMPLATE_DEC_MASK)
136# define VSF_HAL_TEMPLATE_DEC_MASK VSF_HAL_COUNT_TO_MASK(VSF_HAL_TEMPLATE_DEC_COUNT)
137#endif
138
139/*
140extern vsf_hw_gpio_t vsf_hw_gpio0;
141extern vsf_hw_gpio_t vsf_hw_gpio1;
142 */
143#define __VSF_HAL_TEMPLATE_MASK VSF_HAL_TEMPLATE_DEC_MASK
144#define __VSF_HAL_TEMPLATE_MACRO VSF_HAL_TEMPLATE_DEC_LV0
145#define __VSF_HAL_TEMPLATE_ARG VSF_HAL_TEMPLATE_DEC_OP
147
148/**************************** instance's array declaration *********************/
149
150#if !defined(VSF_HAL_TEMPLATE_DEC_REMOVE_ARRAY) && (VSF_HAL_TEMPLATE_DEC_MASK != 0)
151# ifndef VSF_HAL_TEMPLATE_DEC_INSTANCE_ARRAY
152# define VSF_HAL_TEMPLATE_DEC_INSTANCE_ARRAY VSF_MCONNECT(VSF_HAL_TEMPLATE_DEC_PREFIX, VSF_HAL_TEMPLATE_DEC_NAME, s)
153# endif
154/*
155extern vsf_hw_gpio_t *const vsf_hw_gpios[2];
156 */
157extern VSF_HAL_TEMPLATE_DEC_INSTANCE_TYPE *const VSF_HAL_TEMPLATE_DEC_INSTANCE_ARRAY[VSF_HAL_TEMPLATE_DEC_COUNT];
158
159# ifndef VSF_HAL_TEMPLATE_DEC_INSTANCE_INDEX_ARRAY
160# define VSF_HAL_TEMPLATE_DEC_INSTANCE_INDEX_ARRAY VSF_MCONNECT(VSF_HAL_TEMPLATE_DEC_PREFIX, VSF_HAL_TEMPLATE_DEC_NAME, _indexs)
161# endif
162/*
163extern const uint8_t vsf_hw_gpio_indexs[2];
164 */
165extern const uint8_t VSF_HAL_TEMPLATE_DEC_INSTANCE_INDEX_ARRAY[VSF_HAL_TEMPLATE_DEC_COUNT];
166
167#ifndef VSF_HAL_TEMPLATE_DEC_INSTANCE_NAME_ARRAY
168# define VSF_HAL_TEMPLATE_DEC_INSTANCE_NAME_ARRAY VSF_MCONNECT(VSF_HAL_TEMPLATE_DEC_PREFIX, VSF_HAL_TEMPLATE_DEC_NAME, _names)
169#endif
170/*
171extern const uint8_t vsf_hw_gpio_names[2];
172 */
173extern const char *VSF_HAL_TEMPLATE_DEC_INSTANCE_NAME_ARRAY[VSF_HAL_TEMPLATE_DEC_COUNT];
174
175# ifndef VSF_HAL_TEMPLATE_DEC_DEVICE_ARRAY
176# define VSF_HAL_TEMPLATE_DEC_DEVICE_ARRAY VSF_MCONNECT(VSF_HAL_TEMPLATE_DEC_PREFIX, VSF_HAL_TEMPLATE_DEC_NAME, _devices)
177# endif
178/*
179extern const uint8_t vsf_hw_gpio_devices[2];
180 */
181extern const vsf_hal_device_t VSF_HAL_TEMPLATE_DEC_DEVICE_ARRAY[VSF_HAL_TEMPLATE_DEC_COUNT];
182#endif
183
184/**************************** undef ********************************************/
185
186#undef VSF_HAL_TEMPLATE_DEC_NAME
187#undef VSF_HAL_TEMPLATE_DEC_UPCASE_NAME
188#undef VSF_HAL_TEMPLATE_DEC_PREFIX
189#undef VSF_HAL_TEMPLATE_DEC_REMAP_PREFIX
190#undef VSF_HAL_TEMPLATE_DEC_UPCASE_PREFIX
191#undef VSF_HAL_TEMPLATE_DEC_COUNT_MASK_PREFIX
192#undef VSF_HAL_TEMPLATE_DEC_EXTERN_OP
193#undef VSF_HAL_TEMPLATE_DEC_COUNT_SUFFIX
194#undef VSF_HAL_TEMPLATE_DEC_MASK_SUFFIX
195#undef VSF_HAL_TEMPLATE_DEC_DEFINED_COUNT
196#undef VSF_HAL_TEMPLATE_DEC_DEFINED_MASK
197#undef VSF_HAL_TEMPLATE_DEC_COUNT
198#undef VSF_HAL_TEMPLATE_DEC_MASK
199#undef VSF_HAL_TEMPLATE_DEC_TYPE
200#undef VSF_HAL_TEMPLATE_DEC_REMAP_TYPE
201#undef VSF_HAL_TEMPLATE_DEC_INSTANCE_TYPE
202#undef VSF_HAL_TEMPLATE_DEC_INSTANCE_API
203#undef VSF_HAL_TEMPLATE_DEC_ADDITIONAL_API
204#undef VSF_HAL_TEMPLATE_DEC_INSTANCE_OP_TYPE
205#undef VSF_HAL_TEMPLATE_DEC_INSTANCE_OP_INSTANCE
206#undef VSF_HAL_TEMPLATE_DEC_INSTACE
207#undef VSF_HAL_TEMPLATE_DEC_INSTANCE_ARRAY
208#undef VSF_HAL_TEMPLATE_DEC_LV0
209#undef VSF_HAL_TEMPLATE_DEC_INSTANCE_INDEX_ARRAY
210#undef VSF_HAL_TEMPLATE_DEC_INSTANCE_NAME_ARRAY
211#undef VSF_HAL_TEMPLATE_DEC_REMOVE_ARRAY
#define VSF_HAL_TEMPLATE_DEC_COUNT
Definition pm_template.h:36
unsigned char uint8_t
Definition stdint.h:5
Definition vsf_template_hal_driver.h:183
#define VSF_HAL_TEMPLATE_DEC_INSTANCE_OP_TYPE
Definition vsf_template_instance_declaration.h:84
#define VSF_HAL_TEMPLATE_DEC_REMAP_TYPE
Definition vsf_template_instance_declaration.h:41
#define VSF_HAL_TEMPLATE_DEC_INSTANCE_API
Definition vsf_template_instance_declaration.h:54
#define VSF_HAL_TEMPLATE_DEC_PREFIX
Definition vsf_template_instance_declaration.h:27
struct VSF_HAL_TEMPLATE_DEC_REMAP_TYPE VSF_HAL_TEMPLATE_DEC_TYPE
Definition vsf_template_instance_declaration.h:48
#define VSF_HAL_TEMPLATE_DEC_INSTANCE_TYPE
Definition vsf_template_instance_declaration.h:98
#define VSF_HAL_TEMPLATE_DEC_INSTANCE_OP_INSTANCE
Definition vsf_template_instance_declaration.h:87