23#if VSF_HAL_USE_I2C == ENABLED
25#ifndef VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY
26# define VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY DISABLED
29#ifndef VSF_I2C_CFG_REIMPLEMENT_API_CTRL
30# define VSF_I2C_CFG_REIMPLEMENT_API_CTRL DISABLED
33#ifndef VSF_I2C_CFG_REIMPLEMENT_API_GET_CONFIGURATION
34# define VSF_I2C_CFG_REIMPLEMENT_API_GET_CONFIGURATION DISABLED
37#ifdef VSF_I2C_CFG_IMP_REMAP_PREFIX
38# undef VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY
39# undef VSF_I2C_CFG_REIMPLEMENT_API_CTRL
40# undef VSF_I2C_CFG_REIMPLEMENT_API_GET_CONFIGURATION
41# define VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
42# define VSF_I2C_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
43# define VSF_I2C_CFG_REIMPLEMENT_API_CTRL ENABLED
46#if VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
47# ifndef VSF_I2C_CFG_CAPABILITY_IRQ_MASK
48# define VSF_I2C_CFG_CAPABILITY_IRQ_MASK VSF_I2C_IRQ_ALL_BITS_MASK
50# ifndef VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_START
51# define VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_START 1
53# ifndef VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_STOP_RESTART
54# define VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_STOP_RESTART 1
56# ifndef VSF_I2C_CFG_CAPABILITY_SUPPORT_RESTART
57# define VSF_I2C_CFG_CAPABILITY_SUPPORT_RESTART 1
59# ifndef VSF_I2C_CFG_CAPABILITY_MAX_TRANSFER_SIZE
60# define VSF_I2C_CFG_CAPABILITY_MAX_TRANSFER_SIZE 0xFFFF
62# ifndef VSF_I2C_CFG_CAPABILITY_MIN_TRANSFER_SIZE
63# define VSF_I2C_CFG_CAPABILITY_MIN_TRANSFER_SIZE 0
67#define vsf_real_i2c_t VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_t)
68#define vsf_real_master_request VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_master_request)
69#define vsf_real_i2c_capability VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_capability)
70#define vsf_real_i2c_ctrl VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_ctrl)
71#define vsf_real_i2c_get_configuration VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_get_configuration)
77#if VSF_I2C_CFG_REQUEST_TEMPLATE == ENABLED
80 vsf_real_i2c_t * i2c_type_ptr = (vsf_real_i2c_t *)i2c_ptr;
85#if VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
89 .irq_mask = VSF_I2C_CFG_CAPABILITY_IRQ_MASK,
91 .support_no_stop_restart = VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_STOP_RESTART,
92 .support_restart = VSF_I2C_CFG_CAPABILITY_SUPPORT_RESTART,
94 .min_transfer_size = VSF_I2C_CFG_CAPABILITY_MIN_TRANSFER_SIZE,
97 return i2c_capability;
101#if VSF_I2C_CFG_REIMPLEMENT_API_CTRL == DISABLED
109#if VSF_I2C_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
124#undef VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY
125#undef VSF_I2C_CFG_REIMPLEMENT_API_GET_CONFIGURATION
126#undef VSF_I2C_CFG_CAPABILITY_IRQ_MASK
127#undef VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_START
128#undef VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_STOP_RESTART
129#undef VSF_I2C_CFG_CAPABILITY_SUPPORT_RESTART
130#undef VSF_I2C_CFG_CAPABILITY_MAX_TRANSFER_SIZE
131#undef VSF_I2C_CFG_CAPABILITY_MIN_TRANSFER_SIZE
134#undef vsf_real_i2c_capability
135#undef vsf_real_i2c_ctrl
136#undef vsf_real_i2c_get_configuration
140#ifdef VSF_I2C_CFG_IMP_REMAP_PREFIX
141# define vsf_imp_i2c_t VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_t)
142# define vsf_imp_i2c_init VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_init)
143# define vsf_imp_i2c_fini VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_fini)
144# define vsf_imp_i2c_enable VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_enable)
145# define vsf_imp_i2c_disable VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_disable)
146# define vsf_imp_i2c_irq_enable VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_irq_enable)
147# define vsf_imp_i2c_irq_disable VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_irq_disable)
148# define vsf_imp_i2c_status VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_status)
149# define vsf_imp_i2c_capability VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_capability)
150# define vsf_imp_i2c_master_fifo_transfer VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_master_fifo_transfer)
151# define vsf_imp_i2c_master_request VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_master_request)
152# define vsf_imp_i2c_get_transferred_count VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_get_transferred_count)
153# define vsf_imp_i2c_ctrl VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_ctrl)
154# define vsf_imp_i2c_get_configuration VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_get_configuration)
156# define vsf_remap_i2c_t VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_t)
157# define vsf_remap_i2c_init VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_init)
158# define vsf_remap_i2c_fini VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_fini)
159# define vsf_remap_i2c_enable VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_enable)
160# define vsf_remap_i2c_disable VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_disable)
161# define vsf_remap_i2c_irq_enable VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_irq_enable)
162# define vsf_remap_i2c_irq_disable VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_irq_disable)
163# define vsf_remap_i2c_status VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_status)
164# define vsf_remap_i2c_capability VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_capability)
165# define vsf_remap_i2c_master_fifo_transfer VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_master_fifo_transfer)
166# define vsf_remap_i2c_master_request VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_master_request)
167# define vsf_remap_i2c_get_transferred_count VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_get_transferred_count)
168# define vsf_remap_i2c_ctrl VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_ctrl)
169# define vsf_remap_i2c_get_configuration VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_get_configuration)
171# define VSF_I2C_CFG_IMP_REMAP_FUNCTIONS \
172 vsf_err_t vsf_imp_i2c_init(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_cfg_t *cfg_ptr) \
174 VSF_HAL_ASSERT(i2c_ptr != NULL); \
175 return vsf_remap_i2c_init(i2c_ptr, cfg_ptr); \
177 void vsf_imp_i2c_fini(vsf_imp_i2c_t *i2c_ptr) \
179 VSF_HAL_ASSERT(i2c_ptr != NULL); \
180 vsf_remap_i2c_fini(i2c_ptr); \
182 fsm_rt_t vsf_imp_i2c_enable(vsf_imp_i2c_t *i2c_ptr) \
184 VSF_HAL_ASSERT(i2c_ptr != NULL); \
185 return vsf_remap_i2c_enable(i2c_ptr); \
187 fsm_rt_t vsf_imp_i2c_disable(vsf_imp_i2c_t *i2c_ptr) \
189 VSF_HAL_ASSERT(i2c_ptr != NULL); \
190 return vsf_remap_i2c_disable(i2c_ptr); \
192 void vsf_imp_i2c_irq_enable(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask) \
194 VSF_HAL_ASSERT(i2c_ptr != NULL); \
195 vsf_remap_i2c_irq_enable(i2c_ptr, irq_mask); \
197 void vsf_imp_i2c_irq_disable(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask) \
199 VSF_HAL_ASSERT(i2c_ptr != NULL); \
200 vsf_remap_i2c_irq_disable(i2c_ptr, irq_mask); \
202 vsf_i2c_status_t vsf_imp_i2c_status(vsf_imp_i2c_t *i2c_ptr) \
204 VSF_HAL_ASSERT(i2c_ptr != NULL); \
205 return vsf_remap_i2c_status(i2c_ptr); \
207 vsf_i2c_capability_t vsf_imp_i2c_capability(vsf_imp_i2c_t *i2c_ptr) \
209 VSF_HAL_ASSERT(i2c_ptr != NULL); \
210 return vsf_remap_i2c_capability(i2c_ptr); \
212 fsm_rt_t vsf_imp_i2c_master_fifo_transfer(vsf_imp_i2c_t *i2c_ptr, \
215 uint_fast16_t count, \
216 uint8_t *buffer_ptr, \
217 vsf_i2c_cmd_t *cur_cmd_ptr, \
218 uint_fast16_t *offset_ptr) \
220 VSF_HAL_ASSERT(i2c_ptr != NULL); \
221 return vsf_remap_i2c_master_fifo_transfer(i2c_ptr, address, cmd, count, buffer_ptr, \
222 cur_cmd_ptr, offset_ptr); \
224 vsf_err_t vsf_imp_i2c_master_request(vsf_imp_i2c_t *i2c_ptr, \
226 vsf_imp_i2c_cmd_t cmd, \
228 uint8_t *buffer_ptr) \
230 VSF_HAL_ASSERT(i2c_ptr != NULL); \
231 return vsf_remap_i2c_master_request(i2c_ptr, address, cmd, count, buffer_ptr); \
233 uint_fast32_t vsf_imp_i2c_get_transferred_count(vsf_imp_i2c_t *i2c_ptr) \
235 VSF_HAL_ASSERT(i2c_ptr != NULL); \
236 VSF_HAL_ASSERT(vsf_remap_i2c_get_transferred_count!= NULL); \
237 return vsf_remap_i2c_get_transferred_count(i2c_ptr); \
239 vsf_err_t vsf_imp_i2c_ctrl(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_ctrl_t ctrl, void *param) \
241 VSF_HAL_ASSERT(i2c_ptr != NULL); \
242 return vsf_remap_i2c_ctrl(i2c_ptr, ctrl, param); \
244 vsf_err_t vsf_imp_i2c_get_configuration(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_cfg_t *cfg_ptr) \
246 VSF_HAL_ASSERT(i2c_ptr != NULL); \
247 return vsf_remap_i2c_get_configuration(i2c_ptr, cfg_ptr); \
253#define VSF_HAL_TEMPLATE_IMP_NAME _i2c
254#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _I2C
256#if !defined(VSF_I2C_CFG_IMP_PREFIX) && !defined(VSF_I2C_CFG_IMP_DEVICE_PREFIX)
257# error "Please define VSF_I2C_CFG_IMP_PREFIX in i2c driver"
260#if !defined(VSF_I2C_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_I2C_CFG_IMP_DEVICE_UPCASE_PREFIX)
261# error "Please define VSF_I2C_CFG_IMP_UPCASE_PREFIX in i2c driver"
264#ifndef VSF_I2C_CFG_IMP_COUNT_MASK_PREFIX
265# define VSF_I2C_CFG_IMP_COUNT_MASK_PREFIX VSF_I2C_CFG_IMP_UPCASE_PREFIX
268#ifdef VSF_I2C_CFG_IMP_REMAP_FUNCTIONS
269# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_I2C_CFG_IMP_REMAP_FUNCTIONS
274#undef VSF_I2C_CFG_IMP_PREFIX
275#undef VSF_I2C_CFG_IMP_COUNT_MASK_PREFIX
276#undef VSF_I2C_CFG_IMP_UPCASE_PREFIX
277#undef VSF_I2C_CFG_IMP_DEVICE_PREFIX
278#undef VSF_I2C_CFG_IMP_DEVICE_UPCASE_PREFIX
279#undef VSF_I2C_CFG_IMP_LV0
280#undef VSF_I2C_CFG_IMP_REMAP_FUNCTIONS
281#undef VSF_I2C_CFG_IMP_HAS_OP
282#undef VSF_I2C_CFG_IMP_EXTERN_OP
285#undef vsf_imp_i2c_init
286#undef vsf_imp_i2c_fini
287#undef vsf_imp_i2c_enable
288#undef vsf_imp_i2c_disable
289#undef vsf_imp_i2c_irq_enable
290#undef vsf_imp_i2c_irq_disable
291#undef vsf_imp_i2c_status
292#undef vsf_imp_i2c_capability
293#undef vsf_imp_i2c_master_request
294#undef vsf_imp_i2c_get_transferred_count
295#undef vsf_imp_i2c_ctrl
296#undef vsf_imp_i2c_get_configuration
298#undef vsf_remap_i2c_t
299#undef vsf_remap_i2c_init
300#undef vsf_remap_i2c_fini
301#undef vsf_remap_i2c_enable
302#undef vsf_remap_i2c_disable
303#undef vsf_remap_i2c_irq_enable
304#undef vsf_remap_i2c_irq_disable
305#undef vsf_remap_i2c_status
306#undef vsf_remap_i2c_capability
307#undef vsf_remap_i2c_master_request
308#undef vsf_remap_i2c_get_transferred_count
309#undef vsf_remap_i2c_ctrl
310#undef vsf_remap_i2c_get_configuration
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NOT_SUPPORT
function not supported
Definition __type.h:46
#define VSF_I2C_CFG_CAPABILITY_MAX_TRANSFER_SIZE
Definition i2c.c:40
vsf_i2c_cmd_t
Definition i2c.h:32
vsf_err_t vsf_i2c_request_master_request(vsf_i2c_t *i2c_ptr, vsf_i2c_request_t *i2c_request_ptr, uint16_t address, vsf_i2c_cmd_t cmd, uint16_t count, uint8_t *buffer_ptr)
Definition i2c_request.c:87
#define NULL
Definition lvgl.h:26
unsigned short uint16_t
Definition stdint.h:7
unsigned char uint8_t
Definition stdint.h:5
Predefined I2C capability structure that can be reimplemented in specific HAL drivers.
Definition vsf_template_i2c.h:778
uint8_t support_no_start
Definition vsf_template_i2c.h:788
I2C configuration.
Definition vsf_template_i2c.h:882
#define VSF_HAL_ASSERT(__CON)
all hal modules use this configuration file
Definition vsf_hal_cfg.h:36
vsf_i2c_ctrl_t
I2C control commands for hardware-specific operations.
Definition vsf_template_i2c.h:910