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#ifndef VSF_I2C_CFG_REIMPLEMENT_API_IRQ_CLEAR
38# define VSF_I2C_CFG_REIMPLEMENT_API_IRQ_CLEAR DISABLED
41#ifdef VSF_I2C_CFG_IMP_REMAP_PREFIX
42# undef VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY
43# undef VSF_I2C_CFG_REIMPLEMENT_API_CTRL
44# undef VSF_I2C_CFG_REIMPLEMENT_API_GET_CONFIGURATION
45# undef VSF_I2C_CFG_REIMPLEMENT_API_IRQ_CLEAR
46# define VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
47# define VSF_I2C_CFG_REIMPLEMENT_API_GET_CONFIGURATION ENABLED
48# define VSF_I2C_CFG_REIMPLEMENT_API_CTRL ENABLED
49# define VSF_I2C_CFG_REIMPLEMENT_API_IRQ_CLEAR ENABLED
52#if VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
53# ifndef VSF_I2C_CFG_CAPABILITY_IRQ_MASK
54# define VSF_I2C_CFG_CAPABILITY_IRQ_MASK VSF_I2C_IRQ_ALL_BITS_MASK
56# ifndef VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_START
57# define VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_START 1
59# ifndef VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_STOP_RESTART
60# define VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_STOP_RESTART 1
62# ifndef VSF_I2C_CFG_CAPABILITY_SUPPORT_RESTART
63# define VSF_I2C_CFG_CAPABILITY_SUPPORT_RESTART 1
65# ifndef VSF_I2C_CFG_CAPABILITY_MAX_TRANSFER_SIZE
66# define VSF_I2C_CFG_CAPABILITY_MAX_TRANSFER_SIZE 0xFFFF
68# ifndef VSF_I2C_CFG_CAPABILITY_MIN_TRANSFER_SIZE
69# define VSF_I2C_CFG_CAPABILITY_MIN_TRANSFER_SIZE 0
73#define vsf_real_i2c_t VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_t)
74#define vsf_real_master_request VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_master_request)
75#define vsf_real_i2c_capability VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_capability)
76#define vsf_real_i2c_ctrl VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_ctrl)
77#define vsf_real_i2c_get_configuration VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_get_configuration)
78#define vsf_real_i2c_irq_clear VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_irq_clear)
84#if VSF_I2C_CFG_REQUEST_TEMPLATE == ENABLED
87 vsf_real_i2c_t * i2c_type_ptr = (vsf_real_i2c_t *)i2c_ptr;
92#if VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
96 .irq_mask = VSF_I2C_CFG_CAPABILITY_IRQ_MASK,
98 .support_no_stop_restart = VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_STOP_RESTART,
99 .support_restart = VSF_I2C_CFG_CAPABILITY_SUPPORT_RESTART,
101 .min_transfer_size = VSF_I2C_CFG_CAPABILITY_MIN_TRANSFER_SIZE,
104 return i2c_capability;
108#if VSF_I2C_CFG_REIMPLEMENT_API_CTRL == DISABLED
116#if VSF_I2C_CFG_REIMPLEMENT_API_GET_CONFIGURATION == DISABLED
129#if VSF_I2C_CFG_REIMPLEMENT_API_IRQ_CLEAR == DISABLED
143#undef VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY
144#undef VSF_I2C_CFG_REIMPLEMENT_API_GET_CONFIGURATION
145#undef VSF_I2C_CFG_REIMPLEMENT_API_IRQ_CLEAR
146#undef VSF_I2C_CFG_CAPABILITY_IRQ_MASK
147#undef VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_START
148#undef VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_STOP_RESTART
149#undef VSF_I2C_CFG_CAPABILITY_SUPPORT_RESTART
150#undef VSF_I2C_CFG_CAPABILITY_MAX_TRANSFER_SIZE
151#undef VSF_I2C_CFG_CAPABILITY_MIN_TRANSFER_SIZE
154#undef vsf_real_i2c_capability
155#undef vsf_real_i2c_ctrl
156#undef vsf_real_i2c_get_configuration
157#undef vsf_real_i2c_irq_clear
161#ifdef VSF_I2C_CFG_IMP_REMAP_PREFIX
162# define vsf_imp_i2c_t VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_t)
163# define vsf_imp_i2c_init VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_init)
164# define vsf_imp_i2c_fini VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_fini)
165# define vsf_imp_i2c_enable VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_enable)
166# define vsf_imp_i2c_disable VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_disable)
167# define vsf_imp_i2c_irq_enable VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_irq_enable)
168# define vsf_imp_i2c_irq_disable VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_irq_disable)
169# define vsf_imp_i2c_status VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_status)
170# define vsf_imp_i2c_capability VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_capability)
171# define vsf_imp_i2c_master_fifo_transfer VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_master_fifo_transfer)
172# define vsf_imp_i2c_master_request VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_master_request)
173# define vsf_imp_i2c_get_transferred_count VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_get_transferred_count)
174# define vsf_imp_i2c_ctrl VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_ctrl)
175# define vsf_imp_i2c_get_configuration VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_get_configuration)
176# define vsf_imp_i2c_irq_clear VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_irq_clear)
178# define vsf_remap_i2c_t VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_t)
179# define vsf_remap_i2c_init VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_init)
180# define vsf_remap_i2c_fini VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_fini)
181# define vsf_remap_i2c_enable VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_enable)
182# define vsf_remap_i2c_disable VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_disable)
183# define vsf_remap_i2c_irq_enable VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_irq_enable)
184# define vsf_remap_i2c_irq_disable VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_irq_disable)
185# define vsf_remap_i2c_status VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_status)
186# define vsf_remap_i2c_capability VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_capability)
187# define vsf_remap_i2c_master_fifo_transfer VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_master_fifo_transfer)
188# define vsf_remap_i2c_master_request VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_master_request)
189# define vsf_remap_i2c_get_transferred_count VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_get_transferred_count)
190# define vsf_remap_i2c_ctrl VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_ctrl)
191# define vsf_remap_i2c_get_configuration VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_get_configuration)
192# define vsf_remap_i2c_irq_clear VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_irq_clear)
194# define VSF_I2C_CFG_IMP_REMAP_FUNCTIONS \
195 vsf_err_t vsf_imp_i2c_init(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_cfg_t *cfg_ptr) \
197 VSF_HAL_ASSERT(i2c_ptr != NULL); \
198 return vsf_remap_i2c_init(i2c_ptr, cfg_ptr); \
200 void vsf_imp_i2c_fini(vsf_imp_i2c_t *i2c_ptr) \
202 VSF_HAL_ASSERT(i2c_ptr != NULL); \
203 vsf_remap_i2c_fini(i2c_ptr); \
205 fsm_rt_t vsf_imp_i2c_enable(vsf_imp_i2c_t *i2c_ptr) \
207 VSF_HAL_ASSERT(i2c_ptr != NULL); \
208 return vsf_remap_i2c_enable(i2c_ptr); \
210 fsm_rt_t vsf_imp_i2c_disable(vsf_imp_i2c_t *i2c_ptr) \
212 VSF_HAL_ASSERT(i2c_ptr != NULL); \
213 return vsf_remap_i2c_disable(i2c_ptr); \
215 void vsf_imp_i2c_irq_enable(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask) \
217 VSF_HAL_ASSERT(i2c_ptr != NULL); \
218 vsf_remap_i2c_irq_enable(i2c_ptr, irq_mask); \
220 void vsf_imp_i2c_irq_disable(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask) \
222 VSF_HAL_ASSERT(i2c_ptr != NULL); \
223 vsf_remap_i2c_irq_disable(i2c_ptr, irq_mask); \
225 vsf_i2c_status_t vsf_imp_i2c_status(vsf_imp_i2c_t *i2c_ptr) \
227 VSF_HAL_ASSERT(i2c_ptr != NULL); \
228 return vsf_remap_i2c_status(i2c_ptr); \
230 vsf_i2c_capability_t vsf_imp_i2c_capability(vsf_imp_i2c_t *i2c_ptr) \
232 VSF_HAL_ASSERT(i2c_ptr != NULL); \
233 return vsf_remap_i2c_capability(i2c_ptr); \
235 fsm_rt_t vsf_imp_i2c_master_fifo_transfer(vsf_imp_i2c_t *i2c_ptr, \
238 uint_fast16_t count, \
239 uint8_t *buffer_ptr, \
240 vsf_i2c_cmd_t *cur_cmd_ptr, \
241 uint_fast16_t *offset_ptr) \
243 VSF_HAL_ASSERT(i2c_ptr != NULL); \
244 return vsf_remap_i2c_master_fifo_transfer(i2c_ptr, address, cmd, count, buffer_ptr, \
245 cur_cmd_ptr, offset_ptr); \
247 vsf_err_t vsf_imp_i2c_master_request(vsf_imp_i2c_t *i2c_ptr, \
249 vsf_imp_i2c_cmd_t cmd, \
251 uint8_t *buffer_ptr) \
253 VSF_HAL_ASSERT(i2c_ptr != NULL); \
254 return vsf_remap_i2c_master_request(i2c_ptr, address, cmd, count, buffer_ptr); \
256 uint_fast32_t vsf_imp_i2c_get_transferred_count(vsf_imp_i2c_t *i2c_ptr) \
258 VSF_HAL_ASSERT(i2c_ptr != NULL); \
259 VSF_HAL_ASSERT(vsf_remap_i2c_get_transferred_count!= NULL); \
260 return vsf_remap_i2c_get_transferred_count(i2c_ptr); \
262 vsf_err_t vsf_imp_i2c_ctrl(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_ctrl_t ctrl, void *param) \
264 VSF_HAL_ASSERT(i2c_ptr != NULL); \
265 return vsf_remap_i2c_ctrl(i2c_ptr, ctrl, param); \
267 vsf_err_t vsf_imp_i2c_get_configuration(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_cfg_t *cfg_ptr) \
269 VSF_HAL_ASSERT(i2c_ptr != NULL); \
270 return vsf_remap_i2c_get_configuration(i2c_ptr, cfg_ptr); \
272 vsf_i2c_irq_mask_t vsf_imp_i2c_irq_clear(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask) \
274 VSF_HAL_ASSERT(i2c_ptr != NULL); \
275 return vsf_remap_i2c_irq_clear(i2c_ptr, irq_mask); \
281#define VSF_HAL_TEMPLATE_IMP_NAME _i2c
282#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _I2C
284#if !defined(VSF_I2C_CFG_IMP_PREFIX) && !defined(VSF_I2C_CFG_IMP_DEVICE_PREFIX)
285# error "Please define VSF_I2C_CFG_IMP_PREFIX in i2c driver"
288#if !defined(VSF_I2C_CFG_IMP_UPCASE_PREFIX) && !defined(VSF_I2C_CFG_IMP_DEVICE_UPCASE_PREFIX)
289# error "Please define VSF_I2C_CFG_IMP_UPCASE_PREFIX in i2c driver"
292#ifndef VSF_I2C_CFG_IMP_COUNT_MASK_PREFIX
293# define VSF_I2C_CFG_IMP_COUNT_MASK_PREFIX VSF_I2C_CFG_IMP_UPCASE_PREFIX
296#ifdef VSF_I2C_CFG_IMP_REMAP_FUNCTIONS
297# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_I2C_CFG_IMP_REMAP_FUNCTIONS
302#undef VSF_I2C_CFG_IMP_PREFIX
303#undef VSF_I2C_CFG_IMP_COUNT_MASK_PREFIX
304#undef VSF_I2C_CFG_IMP_UPCASE_PREFIX
305#undef VSF_I2C_CFG_IMP_DEVICE_PREFIX
306#undef VSF_I2C_CFG_IMP_DEVICE_UPCASE_PREFIX
307#undef VSF_I2C_CFG_IMP_LV0
308#undef VSF_I2C_CFG_IMP_REMAP_FUNCTIONS
309#undef VSF_I2C_CFG_IMP_HAS_OP
310#undef VSF_I2C_CFG_IMP_EXTERN_OP
313#undef vsf_imp_i2c_init
314#undef vsf_imp_i2c_fini
315#undef vsf_imp_i2c_enable
316#undef vsf_imp_i2c_disable
317#undef vsf_imp_i2c_irq_enable
318#undef vsf_imp_i2c_irq_disable
319#undef vsf_imp_i2c_status
320#undef vsf_imp_i2c_capability
321#undef vsf_imp_i2c_master_request
322#undef vsf_imp_i2c_get_transferred_count
323#undef vsf_imp_i2c_ctrl
324#undef vsf_imp_i2c_get_configuration
325#undef vsf_imp_i2c_irq_clear
327#undef vsf_remap_i2c_t
328#undef vsf_remap_i2c_init
329#undef vsf_remap_i2c_fini
330#undef vsf_remap_i2c_enable
331#undef vsf_remap_i2c_disable
332#undef vsf_remap_i2c_irq_enable
333#undef vsf_remap_i2c_irq_disable
334#undef vsf_remap_i2c_status
335#undef vsf_remap_i2c_capability
336#undef vsf_remap_i2c_master_request
337#undef vsf_remap_i2c_get_transferred_count
338#undef vsf_remap_i2c_ctrl
339#undef vsf_remap_i2c_get_configuration
340#undef vsf_remap_i2c_irq_clear
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
const i_spi_t vsf_spi_irq_mask_t irq_mask
Definition spi_interface.h:38
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:771
uint8_t support_no_start
Definition vsf_template_i2c.h:781
I2C configuration.
Definition vsf_template_i2c.h:875
#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:903
vsf_i2c_irq_mask_t
Predefined VSF I2C interrupt masks that can be reimplemented in specific HAL drivers....
Definition vsf_template_i2c.h:539