18#if VSF_HAL_USE_DAC == ENABLED
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)
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)
36#ifndef VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY
37# define VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
40#ifndef VSF_DAC_CFG_REIMPLEMENT_API_CTRL
41# define VSF_DAC_CFG_REIMPLEMENT_API_CTRL DISABLED
44#ifndef VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION
45# define VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
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
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
61# ifndef VSF_DAC_CFG_CAPABILITY_MAX_RESOLUTION_BITS
62# define VSF_DAC_CFG_CAPABILITY_MAX_RESOLUTION_BITS 12
64# ifndef VSF_DAC_CFG_CAPABILITY_MIN_RESOLUTION_BITS
65# define VSF_DAC_CFG_CAPABILITY_MIN_RESOLUTION_BITS 8
67# ifndef VSF_DAC_CFG_CAPABILITY_CHANNEL_COUNT
68# define VSF_DAC_CFG_CAPABILITY_CHANNEL_COUNT 4
75#if VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
79 .irq_mask = VSF_DAC_CFG_CAPABILITY_IRQ_MASK,
81 .min_resolution_bits = VSF_DAC_CFG_CAPABILITY_MIN_RESOLUTION_BITS,
82 .channel_count = VSF_DAC_CFG_CAPABILITY_CHANNEL_COUNT,
85 return dac_capability;
89#if VSF_DAC_CFG_REIMPLEMENT_API_CTRL == DISABLED
101#if VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
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
131#undef vsf_real_dac_capability
132#undef vsf_real_dac_ctrl
133#undef vsf_real_dac_get_configuration
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)
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)
170# define VSF_DAC_CFG_IMP_REMAP_FUNCTIONS \
171 vsf_err_t vsf_imp_dac_init(vsf_imp_dac_t *dac) \
173 VSF_HAL_ASSERT(dac != NULL); \
174 return vsf_remap_dac_init((vsf_remap_dac_t *)dac); \
177 void vsf_imp_dac_fini(vsf_imp_dac_t *dac) \
179 VSF_HAL_ASSERT(dac != NULL); \
180 vsf_remap_dac_fini((vsf_remap_dac_t *)dac); \
183 vsf_remap_dac_status_t vsf_imp_dac_status(vsf_imp_dac_t *dac) \
185 VSF_HAL_ASSERT(dac != NULL); \
186 return vsf_remap_dac_status((vsf_remap_dac_t *)dac); \
189 vsf_remap_dac_capability_t vsf_imp_dac_capability(vsf_imp_dac_t *dac) \
191 VSF_HAL_ASSERT(dac != NULL); \
192 return vsf_remap_dac_capability((vsf_remap_dac_t *)dac); \
195 fsm_rt_t vsf_imp_dac_enable(vsf_imp_dac_t *dac) \
197 VSF_HAL_ASSERT(dac != NULL); \
198 return vsf_remap_dac_enable((vsf_remap_dac_t *)dac); \
201 fsm_rt_t vsf_imp_dac_disable(vsf_imp_dac_t *dac) \
203 VSF_HAL_ASSERT(dac != NULL); \
204 return vsf_remap_dac_disable((vsf_remap_dac_t *)dac); \
207 void vsf_imp_dac_irq_enable(vsf_imp_dac_t *dac, vsf_remap_dac_irq_mask_t irq_mask) \
209 VSF_HAL_ASSERT(dac != NULL); \
210 vsf_remap_dac_irq_enable((vsf_remap_dac_t *)dac, irq_mask); \
213 void vsf_imp_dac_irq_disable(vsf_imp_dac_t *dac, vsf_remap_dac_irq_mask_t irq_mask) \
215 VSF_HAL_ASSERT(dac != NULL); \
216 vsf_remap_dac_irq_disable((vsf_remap_dac_t *)dac, irq_mask); \
219 vsf_dac_irq_mask_t vsf_imp_dac_irq_clear(vsf_imp_dac_t *dac, vsf_remap_dac_irq_mask_t irq_mask) \
221 VSF_HAL_ASSERT(dac != NULL); \
222 return vsf_remap_dac_irq_clear((vsf_remap_dac_t *)dac, irq_mask); \
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) \
228 VSF_HAL_ASSERT(dac != NULL); \
229 return vsf_remap_dac_channel_request_once((vsf_remap_dac_t *)dac, channel_cfg, value); \
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) \
235 VSF_HAL_ASSERT(dac != NULL); \
236 return vsf_remap_dac_channel_config((vsf_remap_dac_t *)dac, channel_cfgs, channel_cfgs_cnt);\
239 vsf_err_t vsf_imp_dac_channel_request(vsf_imp_dac_t *dac, \
240 void *buffer, uint_fast32_t count) \
242 VSF_HAL_ASSERT(dac != NULL); \
243 return vsf_remap_dac_channel_request((vsf_remap_dac_t *)dac, buffer, count); \
246 vsf_err_t vsf_imp_dac_get_configuration(vsf_imp_dac_t *dac, vsf_dac_cfg_t *cfg) \
248 VSF_HAL_ASSERT(dac != NULL); \
249 return vsf_remap_dac_get_configuration((vsf_remap_dac_t *)dac, cfg); \
251 vsf_err_t vsf_imp_dac_ctrl(vsf_imp_dac_t *dac, vsf_dac_ctrl_t ctrl, void *param) \
253 VSF_HAL_ASSERT(dac != NULL); \
254 return vsf_remap_dac_ctrl((vsf_remap_dac_t *)dac, ctrl, param); \
263#define VSF_HAL_TEMPLATE_IMP_NAME _dac
264#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _DAC
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"
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"
274#ifndef VSF_DAC_CFG_IMP_COUNT_MASK_PREFIX
275# define VSF_DAC_CFG_IMP_COUNT_MASK_PREFIX VSF_DAC_CFG_IMP_UPCASE_PREFIX
278#ifdef VSF_DAC_CFG_IMP_REMAP_FUNCTIONS
279# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_DAC_CFG_IMP_REMAP_FUNCTIONS
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
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
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
327#undef VSF_HAL_TEMPLATE_IMP_NAME
328#undef VSF_HAL_TEMPLATE_IMP_UPCASE_NAME
353#ifdef VSF_DAC_CFG_MODE_CHECK_UNIQUE
357#ifdef VSF_DAC_CUSTOM_MODE_VALUES
365#ifdef VSF_DAC_CFG_IRQ_MASK_CHECK_UNIQUE
367#ifdef VSF_DAC_CUSTOM_IRQ_MASK_VALUES
383#ifdef VSF_DAC_CUSTOM_IRQ_MASK_VALUES
384 , VSF_DAC_CUSTOM_IRQ_MASK_VALUES
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
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