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#define vsf_real_dac_t VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_t)
25#define vsf_real_dac_capability VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_capability)
26#define vsf_real_dac_get_configuration VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_get_configuration)
27
28#ifndef VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY
29# define VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
30#endif
31
32#ifndef VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION
33# define VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
34#endif
35
36#ifdef VSF_DAC_CFG_IMP_REMAP_PREFIX
37# undef VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY
38# define VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
39# undef VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION
40# define VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
41#endif
42
43#if VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
44# ifndef VSF_DAC_CFG_CAPABILITY_IRQ_MASK
45# define VSF_DAC_CFG_CAPABILITY_IRQ_MASK VSF_DAC_IRQ_ALL_BITS_MASK
46# endif
47# ifndef VSF_DAC_CFG_CAPABILITY_MAX_RESOLUTION_BITS
48# define VSF_DAC_CFG_CAPABILITY_MAX_RESOLUTION_BITS 12
49# endif
50# ifndef VSF_DAC_CFG_CAPABILITY_MIN_RESOLUTION_BITS
51# define VSF_DAC_CFG_CAPABILITY_MIN_RESOLUTION_BITS 8
52# endif
53# ifndef VSF_DAC_CFG_CAPABILITY_CHANNEL_COUNT
54# define VSF_DAC_CFG_CAPABILITY_CHANNEL_COUNT 4
55# endif
56#endif
57
58/*============================ LOCAL VARIABLES ===============================*/
59/*============================ IMPLEMENTATION ================================*/
60
61#if VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
62vsf_dac_capability_t vsf_real_dac_capability(vsf_real_dac_t *dac_ptr)
63{
64 vsf_dac_capability_t dac_capability = {
65 .irq_mask = VSF_DAC_CFG_CAPABILITY_IRQ_MASK,
66 .max_resolution_bits = VSF_DAC_CFG_CAPABILITY_MAX_RESOLUTION_BITS,
67 .min_resolution_bits = VSF_DAC_CFG_CAPABILITY_MIN_RESOLUTION_BITS,
68 .channel_count = VSF_DAC_CFG_CAPABILITY_CHANNEL_COUNT,
69 };
70
71 return dac_capability;
72}
73#endif
74
75#if VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
76vsf_err_t vsf_real_dac_get_configuration(vsf_real_dac_t *dac_ptr, vsf_dac_cfg_t *cfg_ptr)
77{
78 VSF_HAL_ASSERT(NULL != dac_ptr);
79 VSF_HAL_ASSERT(NULL != cfg_ptr);
80
81 // Default implementation: not supported, trigger assertion
83
85}
86#endif
87
88/*============================ MACROS ========================================*/
89
90#undef VSF_DAC_CFG_REIMPLEMENT_API_CAPABILITY
91#undef VSF_DAC_CFG_REIMPLEMENT_API_GET_CONFIGURATION
92#undef VSF_DAC_CFG_CAPABILITY_IRQ_MASK
93#undef VSF_DAC_CFG_CAPABILITY_MAX_RESOLUTION_BITS
94#undef VSF_DAC_CFG_CAPABILITY_MIN_RESOLUTION_BITS
95#undef VSF_DAC_CFG_CAPABILITY_CHANNEL_COUNT
96
97#undef vsf_real_dac_t
98#undef vsf_real_dac_capability
99#undef vsf_real_dac_get_configuration
100
101/*============================ MACROS ========================================*/
102
103#ifdef VSF_DAC_CFG_IMP_REMAP_PREFIX
104# define vsf_imp_dac_t VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_t)
105# define vsf_imp_dac_init(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_init)
106# define vsf_imp_dac_fini(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_fini)
107# define vsf_imp_dac_enable(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_enable)
108# define vsf_imp_dac_disable(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_disable)
109# define vsf_imp_dac_status(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_status)
110# define vsf_imp_dac_capability(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_capability)
111# define vsf_imp_dac_irq_enable(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_irq_enable)
112# define vsf_imp_dac_irq_disable(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_irq_disable)
113# define vsf_imp_dac_channel_request_once(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_channel_request_once)
114# define vsf_imp_dac_channel_config(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_channel_config)
115# define vsf_imp_dac_channel_request(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_channel_request)
116# define vsf_imp_dac_get_configuration VSF_MCONNECT(VSF_DAC_CFG_IMP_PREFIX, _dac_get_configuration)
117
118# define vsf_remap_dac_t VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_t)
119# define vsf_remap_dac_init(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_init)
120# define vsf_remap_dac_fini(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_fini)
121# define vsf_remap_dac_enable(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_enable)
122# define vsf_remap_dac_disable(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_disable)
123# define vsf_remap_dac_status(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_status)
124# define vsf_remap_dac_capability(__DAC) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_capability)
125# define vsf_remap_dac_irq_enable(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_irq_enable)
126# define vsf_remap_dac_irq_disable(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_irq_disable)
127# define vsf_remap_dac_channel_request_once(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_channel_request_once)
128# define vsf_remap_dac_channel_config(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_channel_config)
129# define vsf_remap_dac_channel_request(__DAC, ...) VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_channel_request)
130# define vsf_remap_dac_get_configuration VSF_MCONNECT(VSF_DAC_CFG_IMP_REMAP_PREFIX, _dac_get_configuration)
131
132# define VSF_DAC_CFG_IMP_REMAP_FUNCTIONS \
133 vsf_err_t vsf_imp_dac_init(vsf_imp_dac_t *dac) \
134 { \
135 VSF_HAL_ASSERT(dac != NULL); \
136 return vsf_remap_dac_init((vsf_remap_dac_t *)dac); \
137 } \
138 \
139 void vsf_imp_dac_fini(vsf_imp_dac_t *dac) \
140 { \
141 VSF_HAL_ASSERT(dac != NULL); \
142 vsf_remap_dac_fini((vsf_remap_dac_t *)dac); \
143 } \
144 \
145 vsf_remap_dac_status_t vsf_imp_dac_status(vsf_imp_dac_t *dac) \
146 { \
147 VSF_HAL_ASSERT(dac != NULL); \
148 return vsf_remap_dac_status((vsf_remap_dac_t *)dac); \
149 } \
150 \
151 vsf_remap_dac_capability_t vsf_imp_dac_capability(vsf_imp_dac_t *dac) \
152 { \
153 VSF_HAL_ASSERT(dac != NULL); \
154 return vsf_remap_dac_capability((vsf_remap_dac_t *)dac); \
155 } \
156 \
157 fsm_rt_t vsf_imp_dac_enable(vsf_imp_dac_t *dac) \
158 { \
159 VSF_HAL_ASSERT(dac != NULL); \
160 return vsf_remap_dac_enable((vsf_remap_dac_t *)dac); \
161 } \
162 \
163 fsm_rt_t vsf_imp_dac_disable(vsf_imp_dac_t *dac) \
164 { \
165 VSF_HAL_ASSERT(dac != NULL); \
166 return vsf_remap_dac_disable((vsf_remap_dac_t *)dac); \
167 } \
168 \
169 void vsf_imp_dac_irq_enable(vsf_imp_dac_t *dac, vsf_remap_dac_irq_mask_t irq_mask) \
170 { \
171 VSF_HAL_ASSERT(dac != NULL); \
172 vsf_remap_dac_irq_enable((vsf_remap_dac_t *)dac, irq_mask); \
173 } \
174 \
175 void vsf_imp_dac_irq_disable(vsf_imp_dac_t *dac, vsf_remap_dac_irq_mask_t irq_mask) \
176 { \
177 VSF_HAL_ASSERT(dac != NULL); \
178 vsf_remap_dac_irq_disable((vsf_remap_dac_t *)dac, irq_mask); \
179 } \
180 \
181 vsf_err_t vsf_imp_dac_channel_request_once(vsf_imp_dac_t *dac, \
182 vsf_remap_dac_channel_cfg_t *channel_cfg, uint_fast16_t value) \
183 { \
184 VSF_HAL_ASSERT(dac != NULL); \
185 return vsf_remap_dac_channel_request_once((vsf_remap_dac_t *)dac, channel_cfg, value); \
186 } \
187 \
188 vsf_err_t vsf_imp_dac_channel_config(vsf_imp_dac_t *dac, \
189 vsf_remap_dac_channel_cfg_t *channel_cfgs, uint_fast8_t channel_cfgs_cnt) \
190 { \
191 VSF_HAL_ASSERT(dac != NULL); \
192 return vsf_remap_dac_channel_config((vsf_remap_dac_t *)dac, channel_cfgs, channel_cfgs_cnt);\
193 } \
194 \
195 vsf_err_t vsf_imp_dac_channel_request(vsf_imp_dac_t *dac, \
196 void *buffer, uint_fast32_t count) \
197 { \
198 VSF_HAL_ASSERT(dac != NULL); \
199 return vsf_remap_dac_channel_request((vsf_remap_dac_t *)dac, buffer, count); \
200 } \
201 \
202 vsf_err_t vsf_imp_dac_get_configuration(vsf_imp_dac_t *dac, vsf_dac_cfg_t *cfg) \
203 { \
204 VSF_HAL_ASSERT(dac != NULL); \
205 return vsf_remap_dac_get_configuration((vsf_remap_dac_t *)dac, cfg); \
206 }
207#endif
208
209/*============================ LOCAL VARIABLES ===============================*/
210/*============================ IMPLEMENTATION ================================*/
211/*============================ MACROS ========================================*/
212/*============================ GLOBAL VARIABLES ==============================*/
213
214#define VSF_HAL_TEMPLATE_IMP_NAME _dac
215#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _DAC
216
217#if !defined(VSF_DAC_CFG_IMP_PREFIX) && !defined(VSF_DAC_CFG_IMP_DEVICE_PREFIX)
218# error "Please define VSF_DAC_CFG_IMP_PREFIX in dac driver"
219#endif
220
221#if !defined(VSF_DAC_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_DAC_CFG_IMP_DEVICE_UPCASE_PREFIX)
222# error "Please define VSF_DAC_CFG_IMP_UPCASE_PREFIX in dac driver"
223#endif
224
225#ifndef VSF_DAC_CFG_IMP_COUNT_MASK_PREFIX
226# define VSF_DAC_CFG_IMP_COUNT_MASK_PREFIX VSF_DAC_CFG_IMP_UPCASE_PREFIX
227#endif
228
229#ifdef VSF_DAC_CFG_IMP_REMAP_FUNCTIONS
230# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_DAC_CFG_IMP_REMAP_FUNCTIONS
231#endif
232
234
235#undef VSF_DAC_CFG_IMP_PREFIX
236#undef VSF_DAC_CFG_IMP_COUNT_MASK_PREFIX
237#undef VSF_DAC_CFG_IMP_UPCASE_PREFIX
238#undef VSF_DAC_CFG_IMP_DEVICE_PREFIX
239#undef VSF_DAC_CFG_IMP_DEVICE_UPCASE_PREFIX
240#undef VSF_DAC_CFG_IMP_LV0
241#undef VSF_DAC_CFG_IMP_REMAP_FUNCTIONS
242#undef VSF_DAC_CFG_IMP_HAS_OP
243#undef VSF_DAC_CFG_IMP_EXTERN_OP
244
245#undef vsf_imp_dac_t
246#undef vsf_imp_dac_init
247#undef vsf_imp_dac_fini
248#undef vsf_imp_dac_enable
249#undef vsf_imp_dac_disable
250#undef vsf_imp_dac_status
251#undef vsf_imp_dac_capability
252#undef vsf_imp_dac_irq_enable
253#undef vsf_imp_dac_irq_disable
254#undef vsf_imp_dac_channel_request_once
255#undef vsf_imp_dac_channel_config
256#undef vsf_imp_dac_channel_request
257#undef vsf_imp_dac_get_configuration
258
259#undef vsf_remap_dac_t
260#undef vsf_remap_dac_init
261#undef vsf_remap_dac_fini
262#undef vsf_remap_dac_enable
263#undef vsf_remap_dac_disable
264#undef vsf_remap_dac_status
265#undef vsf_remap_dac_capability
266#undef vsf_remap_dac_irq_enable
267#undef vsf_remap_dac_irq_disable
268#undef vsf_remap_dac_channel_request_once
269#undef vsf_remap_dac_channel_config
270#undef vsf_remap_dac_channel_request
271#undef vsf_remap_dac_get_configuration
272
273#endif /* VSF_HAL_USE_DAC */
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
#define NULL
Definition lvgl.h:26
DAC capability structure that can be reimplemented in specific HAL drivers.
Definition vsf_template_dac.h:294
uint8_t max_resolution_bits
Maximum resolution bits.
Definition vsf_template_dac.h:299
DAC configuration structure.
Definition vsf_template_dac.h:263
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
Generated from commit: vsfteam/vsf@74aa6ce