VSF Documented
dac_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_DAC == ENABLED
19
20/*============================ INCLUDES ======================================*/
21/*============================ MACROS ========================================*/
22
23
24#if defined(VSF_DAC_CFG_IMP_RENAME_DEVICE_PREFIX) && (VSF_DAC_CFG_IMP_RENAME_DEVICE_PREFIX == ENABLED)
25# define vsf_real_dac_t VSF_MCONNECT(VSF_DAC_CFG_IMP_DEVICE_PREFIX, _t)
26# define vsf_real_dac_capability VSF_MCONNECT(VSF_DAC_CFG_IMP_DEVICE_PREFIX, _capability)
27# define vsf_real_dac_ctrl VSF_MCONNECT(VSF_DAC_CFG_IMP_DEVICE_PREFIX, _ctrl)
28# define vsf_real_dac_get_configuration VSF_MCONNECT(VSF_DAC_CFG_IMP_DEVICE_PREFIX, _get_configuration)
29#else
30# define vsf_real_dac_t VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_t)
31# define vsf_real_dac_capability VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_capability)
32# define vsf_real_dac_ctrl VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_ctrl)
33# define vsf_real_dac_get_configuration VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_get_configuration)
34#endif
35
36#ifndef VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY
37# define VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
38#endif
39
40#ifndef VSF_DAC_CFG_REIMPLEMENT_API_CTRL
41# define VSF_DAC_CFG_REIMPLEMENT_API_CTRL DISABLED
42#endif
43
44#ifndef VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION
45# define VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
46#endif
47
48#ifdef VSF_DAC_CFG_IMP_REMAP_PREFIX
49# undef VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY
50# define VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
51# undef VSF_DAC_CFG_REIMPLEMENT_API_CTRL
52# define VSF_DAC_CFG_REIMPLEMENT_API_CTRL ENABLED
53# undef VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION
54# define VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
55#endif
56
57#if VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
58# ifndef VSF_DAC_CFG_CAPABILITY_IRQ_MASK
59# define VSF_DAC_CFG_CAPABILITY_IRQ_MASK VSF_DAC_IRQ_ALL_BITS_MASK
60# endif
61# ifndef VSF_DAC_CFG_CAPABILITY_MAX_RESOLUTION_BITS
62# define VSF_DAC_CFG_CAPABILITY_MAX_RESOLUTION_BITS 12
63# endif
64# ifndef VSF_DAC_CFG_CAPABILITY_MIN_RESOLUTION_BITS
65# define VSF_DAC_CFG_CAPABILITY_MIN_RESOLUTION_BITS 8
66# endif
67# ifndef VSF_DAC_CFG_CAPABILITY_CHANNEL_COUNT
68# define VSF_DAC_CFG_CAPABILITY_CHANNEL_COUNT 4
69# endif
70#endif
71
72/*============================ LOCAL VARIABLES ===============================*/
73/*============================ IMPLEMENTATION ================================*/
74
75#if VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
76vsf_dac_capability_t vsf_real_dac_capability(vsf_real_dac_t *dac_ptr)
77{
78 vsf_dac_capability_t dac_capability = {
79 .irq_mask = VSF_DAC_CFG_CAPABILITY_IRQ_MASK,
80 .max_resolution_bits = VSF_DAC_CFG_CAPABILITY_MAX_RESOLUTION_BITS,
81 .min_resolution_bits = VSF_DAC_CFG_CAPABILITY_MIN_RESOLUTION_BITS,
82 .channel_count = VSF_DAC_CFG_CAPABILITY_CHANNEL_COUNT,
83 };
84
85 return dac_capability;
86}
87#endif
88
89#if VSF_DAC_CFG_REIMPLEMENT_API_CTRL == DISABLED
90vsf_err_t vsf_real_dac_ctrl(vsf_real_dac_t *dac_ptr, vsf_dac_ctrl_t ctrl, void *param)
91{
92 VSF_HAL_ASSERT(NULL != dac_ptr);
93
94 // Default implementation: not supported, trigger assertion
96
98}
99#endif
100
101#if VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
102vsf_err_t vsf_real_dac_get_configuration(vsf_real_dac_t *dac_ptr, vsf_dac_cfg_t *cfg_ptr)
103{
104 VSF_HAL_ASSERT(NULL != dac_ptr);
105 VSF_HAL_ASSERT(NULL != cfg_ptr);
106
107 // Default implementation: not supported, trigger assertion
109
110 return VSF_ERR_NOT_SUPPORT;
111}
112#endif
113
114/*============================ MACROS ========================================*/
115
116#undef VSF_DAC_CFG_REIMPLEMENT_TYPE_CAPABILITY
117#undef VSF_DAC_CFG_REIMPLEMENT_TYPE_CFG
118#undef VSF_DAC_CFG_REIMPLEMENT_TYPE_CHANNEL_CFG
119#undef VSF_DAC_CFG_REIMPLEMENT_TYPE_IRQ_MASK
120#undef VSF_DAC_CFG_REIMPLEMENT_TYPE_STATUS
121#undef VSF_DAC_CFG_REIMPLEMENT_TYPE_CTRL
122#undef VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY
123#undef VSF_DAC_CFG_REIMPLEMENT_API_CTRL
124#undef VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION
125#undef VSF_DAC_CFG_CAPABILITY_IRQ_MASK
126#undef VSF_DAC_CFG_CAPABILITY_MAX_RESOLUTION_BITS
127#undef VSF_DAC_CFG_CAPABILITY_MIN_RESOLUTION_BITS
128#undef VSF_DAC_CFG_CAPABILITY_CHANNEL_COUNT
129
130#undef vsf_real_dac_t
131#undef vsf_real_dac_capability
132#undef vsf_real_dac_ctrl
133#undef vsf_real_dac_get_configuration
134
135/*============================ MACROS ========================================*/
136
137#ifdef VSF_DAC_CFG_IMP_REMAP_PREFIX
138# define vsf_imp_dac_t VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_t)
139# define vsf_imp_dac_init(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_init)
140# define vsf_imp_dac_fini(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_fini)
141# define vsf_imp_dac_enable(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_enable)
142# define vsf_imp_dac_disable(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_disable)
143# define vsf_imp_dac_status(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_status)
144# define vsf_imp_dac_capability(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_capability)
145# define vsf_imp_dac_irq_enable(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_irq_enable)
146# define vsf_imp_dac_irq_disable(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_irq_disable)
147# define vsf_imp_dac_irq_clear(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_irq_clear)
148# define vsf_imp_dac_channel_request_once(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_channel_request_once)
149# define vsf_imp_dac_channel_config(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_channel_config)
150# define vsf_imp_dac_channel_request(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_channel_request)
151# define vsf_imp_dac_get_configuration VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_get_configuration)
152# define vsf_imp_dac_ctrl VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_ctrl)
153
154# define vsf_remap_dac_t VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_t)
155# define vsf_remap_dac_init(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_init)
156# define vsf_remap_dac_fini(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_fini)
157# define vsf_remap_dac_enable(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_enable)
158# define vsf_remap_dac_disable(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_disable)
159# define vsf_remap_dac_status(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_status)
160# define vsf_remap_dac_capability(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_capability)
161# define vsf_remap_dac_irq_enable(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_irq_enable)
162# define vsf_remap_dac_irq_disable(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_irq_disable)
163# define vsf_remap_dac_irq_clear(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_irq_clear)
164# define vsf_remap_dac_channel_request_once(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_channel_request_once)
165# define vsf_remap_dac_channel_config(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_channel_config)
166# define vsf_remap_dac_channel_request(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_channel_request)
167# define vsf_remap_dac_get_configuration VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_get_configuration)
168# define vsf_remap_dac_ctrl VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_ctrl)
169
170# define VSF_DAC_CFG_IMP_REMAP_FUNCTIONS \
171 vsf_err_t vsf_imp_dac_init(vsf_imp_dac_t *dac) \
172 { \
173 VSF_HAL_ASSERT(dac != NULL); \
174 return vsf_remap_dac_init((vsf_remap_dac_t *)dac); \
175 } \
176 \
177 void vsf_imp_dac_fini(vsf_imp_dac_t *dac) \
178 { \
179 VSF_HAL_ASSERT(dac != NULL); \
180 vsf_remap_dac_fini((vsf_remap_dac_t *)dac); \
181 } \
182 \
183 vsf_remap_dac_status_t vsf_imp_dac_status(vsf_imp_dac_t *dac) \
184 { \
185 VSF_HAL_ASSERT(dac != NULL); \
186 return vsf_remap_dac_status((vsf_remap_dac_t *)dac); \
187 } \
188 \
189 vsf_remap_dac_capability_t vsf_imp_dac_capability(vsf_imp_dac_t *dac) \
190 { \
191 VSF_HAL_ASSERT(dac != NULL); \
192 return vsf_remap_dac_capability((vsf_remap_dac_t *)dac); \
193 } \
194 \
195 fsm_rt_t vsf_imp_dac_enable(vsf_imp_dac_t *dac) \
196 { \
197 VSF_HAL_ASSERT(dac != NULL); \
198 return vsf_remap_dac_enable((vsf_remap_dac_t *)dac); \
199 } \
200 \
201 fsm_rt_t vsf_imp_dac_disable(vsf_imp_dac_t *dac) \
202 { \
203 VSF_HAL_ASSERT(dac != NULL); \
204 return vsf_remap_dac_disable((vsf_remap_dac_t *)dac); \
205 } \
206 \
207 void vsf_imp_dac_irq_enable(vsf_imp_dac_t *dac, vsf_remap_dac_irq_mask_t irq_mask) \
208 { \
209 VSF_HAL_ASSERT(dac != NULL); \
210 vsf_remap_dac_irq_enable((vsf_remap_dac_t *)dac, irq_mask); \
211 } \
212 \
213 void vsf_imp_dac_irq_disable(vsf_imp_dac_t *dac, vsf_remap_dac_irq_mask_t irq_mask) \
214 { \
215 VSF_HAL_ASSERT(dac != NULL); \
216 vsf_remap_dac_irq_disable((vsf_remap_dac_t *)dac, irq_mask); \
217 } \
218 \
219 vsf_dac_irq_mask_t vsf_imp_dac_irq_clear(vsf_imp_dac_t *dac, vsf_remap_dac_irq_mask_t irq_mask) \
220 { \
221 VSF_HAL_ASSERT(dac != NULL); \
222 return vsf_remap_dac_irq_clear((vsf_remap_dac_t *)dac, irq_mask); \
223 } \
224 \
225 vsf_err_t vsf_imp_dac_channel_request_once(vsf_imp_dac_t *dac, \
226 vsf_remap_dac_channel_cfg_t *channel_cfg, uint_fast16_t value) \
227 { \
228 VSF_HAL_ASSERT(dac != NULL); \
229 return vsf_remap_dac_channel_request_once((vsf_remap_dac_t *)dac, channel_cfg, value); \
230 } \
231 \
232 vsf_err_t vsf_imp_dac_channel_config(vsf_imp_dac_t *dac, \
233 vsf_remap_dac_channel_cfg_t *channel_cfgs, uint_fast8_t channel_cfgs_cnt) \
234 { \
235 VSF_HAL_ASSERT(dac != NULL); \
236 return vsf_remap_dac_channel_config((vsf_remap_dac_t *)dac, channel_cfgs, channel_cfgs_cnt);\
237 } \
238 \
239 vsf_err_t vsf_imp_dac_channel_request(vsf_imp_dac_t *dac, \
240 void *buffer, uint_fast32_t count) \
241 { \
242 VSF_HAL_ASSERT(dac != NULL); \
243 return vsf_remap_dac_channel_request((vsf_remap_dac_t *)dac, buffer, count); \
244 } \
245 \
246 vsf_err_t vsf_imp_dac_get_configuration(vsf_imp_dac_t *dac, vsf_dac_cfg_t *cfg) \
247 { \
248 VSF_HAL_ASSERT(dac != NULL); \
249 return vsf_remap_dac_get_configuration((vsf_remap_dac_t *)dac, cfg); \
250 } \
251 vsf_err_t vsf_imp_dac_ctrl(vsf_imp_dac_t *dac, vsf_dac_ctrl_t ctrl, void *param) \
252 { \
253 VSF_HAL_ASSERT(dac != NULL); \
254 return vsf_remap_dac_ctrl((vsf_remap_dac_t *)dac, ctrl, param); \
255 }
256#endif
257
258/*============================ LOCAL VARIABLES ===============================*/
259/*============================ IMPLEMENTATION ================================*/
260/*============================ MACROS ========================================*/
261/*============================ GLOBAL VARIABLES ==============================*/
262
263#define VSF_HAL_TEMPLATE_IMP_NAME _dac
264#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _DAC
265
266#if !defined(VSF_DAC_CFG_IMP_PREFIX) && !defined(VSF_DAC_CFG_IMP_DEVICE_PREFIX)
267# error "Please define VSF_DAC_CFG_IMP_PREFIX in dac driver"
268#endif
269
270#if !defined(VSF_DAC_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_DAC_CFG_IMP_DEVICE_UPCASE_PREFIX)
271# error "Please define VSF_DAC_CFG_IMP_UPCASE_PREFIX in dac driver"
272#endif
273
274#ifndef VSF_DAC_CFG_IMP_COUNT_MASK_PREFIX
275# define VSF_DAC_CFG_IMP_COUNT_MASK_PREFIX VSF_DAC_CFG_IMP_UPCASE_PREFIX
276#endif
277
278#ifdef VSF_DAC_CFG_IMP_REMAP_FUNCTIONS
279# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_DAC_CFG_IMP_REMAP_FUNCTIONS
280#endif
281
283
284#undef VSF_DAC_CFG_IMP_PREFIX
285#undef VSF_DAC_CFG_IMP_COUNT_MASK_PREFIX
286#undef VSF_DAC_CFG_IMP_UPCASE_PREFIX
287#undef VSF_DAC_CFG_IMP_DEVICE_PREFIX
288#undef VSF_DAC_CFG_IMP_DEVICE_UPCASE_PREFIX
289#undef VSF_DAC_CFG_IMP_LV0
290#undef VSF_DAC_CFG_IMP_RENAME_DEVICE_PREFIX
291#undef VSF_DAC_CFG_IMP_REMAP_FUNCTIONS
292#undef VSF_DAC_CFG_IMP_HAS_OP
293#undef VSF_DAC_CFG_IMP_EXTERN_OP
294
295#undef vsf_imp_dac_t
296#undef vsf_imp_dac_init
297#undef vsf_imp_dac_fini
298#undef vsf_imp_dac_enable
299#undef vsf_imp_dac_disable
300#undef vsf_imp_dac_status
301#undef vsf_imp_dac_capability
302#undef vsf_imp_dac_irq_enable
303#undef vsf_imp_dac_irq_disable
304#undef vsf_imp_dac_irq_clear
305#undef vsf_imp_dac_channel_request_once
306#undef vsf_imp_dac_channel_config
307#undef vsf_imp_dac_channel_request
308#undef vsf_imp_dac_get_configuration
309#undef vsf_imp_dac_ctrl
310
311#undef vsf_remap_dac_t
312#undef vsf_remap_dac_init
313#undef vsf_remap_dac_fini
314#undef vsf_remap_dac_enable
315#undef vsf_remap_dac_disable
316#undef vsf_remap_dac_status
317#undef vsf_remap_dac_capability
318#undef vsf_remap_dac_irq_enable
319#undef vsf_remap_dac_irq_disable
320#undef vsf_remap_dac_irq_clear
321#undef vsf_remap_dac_channel_request_once
322#undef vsf_remap_dac_channel_config
323#undef vsf_remap_dac_channel_request
324#undef vsf_remap_dac_get_configuration
325#undef vsf_remap_dac_ctrl
326
327#undef VSF_HAL_TEMPLATE_IMP_NAME
328#undef VSF_HAL_TEMPLATE_IMP_UPCASE_NAME
329
330/*============================ STATIC ASSERTIONS ==============================*/
331
332/* User-extensible macros for custom mode and IRQ mask values
333 * Users can define these macros before including this template to append
334 * their custom enum values to the uniqueness checks.
335 *
336 * Check modes for custom values:
337 * VSF_DAC_CFG_MODE_CHECK_UNIQUE - Check mode for custom mode values
338 * Default: VSF_HAL_CHECK_MODE_LOOSE (loose mode, no overlapping bits)
339 * Can be set to: VSF_HAL_CHECK_MODE_STRICT (strict mode, no overlapping bits)
340 * VSF_DAC_CFG_IRQ_MASK_CHECK_UNIQUE - Check mode for custom IRQ mask values
341 * Default: VSF_HAL_CHECK_MODE_STRICT (strict mode, no overlapping bits)
342 * Can be set to: VSF_HAL_CHECK_MODE_LOOSE (loose mode, no overlapping bits)
343 *
344 * Example usage in vendor driver:
345 * #define VSF_DAC_CUSTOM_MODE_VALUES MY_CUSTOM_MODE1, MY_CUSTOM_MODE2
346 * #define VSF_DAC_CFG_MODE_CHECK_UNIQUE VSF_HAL_CHECK_MODE_LOOSE
347 * #define VSF_DAC_CUSTOM_IRQ_MASK_VALUES MY_CUSTOM_IRQ1, MY_CUSTOM_IRQ2
348 * #define VSF_DAC_CFG_IRQ_MASK_CHECK_UNIQUE VSF_HAL_CHECK_MODE_STRICT
349 * #include "hal/driver/common/dac/dac_template.inc"
350 */
351
352
353#ifdef VSF_DAC_CFG_MODE_CHECK_UNIQUE
354/* Default mode lists - can be redefined by users before including this file */
355/* Note: DAC typically doesn't have mode enums, but custom modes can be added */
356
357#ifdef VSF_DAC_CUSTOM_MODE_VALUES
358/* Check uniqueness among custom mode values using user-specified check mode */
360#endif
361#endif /* VSF_DAC_CFG_MODE_CHECK_UNIQUE */
362
363/* ==================== IRQ MASK UNIQUENESS CHECKS ==================== */
364
365#ifdef VSF_DAC_CFG_IRQ_MASK_CHECK_UNIQUE
366
367#ifdef VSF_DAC_CUSTOM_IRQ_MASK_VALUES
368/* Check uniqueness among custom IRQ mask values using user-specified check mode */
370#endif
371
372/* Check uniqueness within vsf_dac_irq_mask_t enum */
373
374/* Check IRQ mask uniqueness - all IRQ mask bits should have different values
375 * Mandatory: VSF_DAC_IRQ_MASK_IDLE, VSF_DAC_IRQ_MASK_CPL
376 */
379 /* Mandatory IRQ masks - always included */
382 /* User-defined IRQ masks - appended by user configuration */
383#ifdef VSF_DAC_CUSTOM_IRQ_MASK_VALUES
384 , VSF_DAC_CUSTOM_IRQ_MASK_VALUES
385#endif
386);
387#endif /* VSF_DAC_CFG_IRQ_MASK_CHECK_UNIQUE */
388
389#undef VSF_DAC_CFG_MODE_CHECK_UNIQUE
390#undef VSF_DAC_CFG_IRQ_MASK_CHECK_UNIQUE
391#undef VSF_DAC_CUSTOM_MODE_VALUES
392#undef VSF_DAC_CUSTOM_IRQ_MASK_VALUES
393
394#endif /* VSF_HAL_USE_DAC */
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
#define VSF_DAC_CFG_MODE_CHECK_UNIQUE
Definition dac.c:268
#define VSF_DAC_CFG_IRQ_MASK_CHECK_UNIQUE
Definition dac.c:269
#define NULL
Definition lvgl.h:26
DAC capability structure that can be reimplemented in specific HAL drivers.
Definition vsf_template_dac.h:322
uint8_t max_resolution_bits
Maximum resolution bits.
Definition vsf_template_dac.h:327
DAC configuration structure.
Definition vsf_template_dac.h:291
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
@ VSF_DAC_IRQ_MASK_IDLE
DAC is idle.
Definition vsf_template_dac.h:228
@ VSF_DAC_IRQ_MASK_CPL
DAC transfer complete.
Definition vsf_template_dac.h:229
vsf_dac_ctrl_t
DAC control commands for hardware-specific operations.
Definition vsf_template_dac.h:342
#define VSF_HAL_CHECK_UNIQUE_CUSTOM(__CHECK_FUNC,...)
Definition vsf_template_static_assert_unique.h:2426
Generated from commit: vsfteam/vsf@b2e9e8a