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#ifdef VSF_I2C_CFG_IMP_REMAP_PREFIX
34# undef VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY
35# undef VSF_I2C_CFG_REIMPLEMENT_API_CTRL
36# define VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY ENABLED
37# define VSF_I2C_CFG_REIMPLEMENT_API_CTRL ENABLED
40#if VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
41# ifndef VSF_I2C_CFG_CAPABILITY_IRQ_MASK
42# define VSF_I2C_CFG_CAPABILITY_IRQ_MASK VSF_I2C_IRQ_ALL_BITS_MASK
44# ifndef VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_START
45# define VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_START 1
47# ifndef VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_STOP_RESTART
48# define VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_STOP_RESTART 1
50# ifndef VSF_I2C_CFG_CAPABILITY_SUPPORT_RESTART
51# define VSF_I2C_CFG_CAPABILITY_SUPPORT_RESTART 1
53# ifndef VSF_I2C_CFG_CAPABILITY_MAX_TRANSFER_SIZE
54# define VSF_I2C_CFG_CAPABILITY_MAX_TRANSFER_SIZE 0xFFFF
56# ifndef VSF_I2C_CFG_CAPABILITY_MIN_TRANSFER_SIZE
57# define VSF_I2C_CFG_CAPABILITY_MIN_TRANSFER_SIZE 0
61#define vsf_real_i2c_t VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_t)
62#define vsf_real_master_request VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_master_request)
63#define vsf_real_i2c_capability VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_capability)
64#define vsf_real_i2c_ctrl VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_ctrl)
70#if VSF_I2C_CFG_REQUEST_TEMPLATE == ENABLED
73 vsf_real_i2c_t * i2c_type_ptr = (vsf_real_i2c_t *)i2c_ptr;
78#if VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY == DISABLED
82 .irq_mask = VSF_I2C_CFG_CAPABILITY_IRQ_MASK,
84 .support_no_stop_restart = VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_STOP_RESTART,
85 .support_restart = VSF_I2C_CFG_CAPABILITY_SUPPORT_RESTART,
87 .min_transfer_size = VSF_I2C_CFG_CAPABILITY_MIN_TRANSFER_SIZE,
90 return i2c_capability;
94#if VSF_I2C_CFG_REIMPLEMENT_API_CTRL == DISABLED
104#undef VSF_I2C_CFG_REIMPLEMENT_API_CAPABILITY
105#undef VSF_I2C_CFG_CAPABILITY_IRQ_MASK
106#undef VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_START
107#undef VSF_I2C_CFG_CAPABILITY_SUPPORT_NO_STOP_RESTART
108#undef VSF_I2C_CFG_CAPABILITY_SUPPORT_RESTART
109#undef VSF_I2C_CFG_CAPABILITY_MAX_TRANSFER_SIZE
110#undef VSF_I2C_CFG_CAPABILITY_MIN_TRANSFER_SIZE
113#undef vsf_real_i2c_capability
114#undef vsf_real_i2c_ctrl
118#ifdef VSF_I2C_CFG_IMP_REMAP_PREFIX
119# define vsf_imp_i2c_t VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_t)
120# define vsf_imp_i2c_init VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_init)
121# define vsf_imp_i2c_fini VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_fini)
122# define vsf_imp_i2c_enable VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_enable)
123# define vsf_imp_i2c_disable VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_disable)
124# define vsf_imp_i2c_irq_enable VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_irq_enable)
125# define vsf_imp_i2c_irq_disable VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_irq_disable)
126# define vsf_imp_i2c_status VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_status)
127# define vsf_imp_i2c_capability VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_capability)
128# define vsf_imp_i2c_master_request VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_master_request)
129# define vsf_imp_i2c_get_transferred_count VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_get_transferred_count)
130# define vsf_imp_i2c_ctrl VSF_MCONNECT(VSF_I2C_CFG_IMP_PREFIX, _i2c_ctrl)
132# define vsf_remap_i2c_t VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_t)
133# define vsf_remap_i2c_init VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_init)
134# define vsf_remap_i2c_fini VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_fini)
135# define vsf_remap_i2c_enable VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_enable)
136# define vsf_remap_i2c_disable VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_disable)
137# define vsf_remap_i2c_irq_enable VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_irq_enable)
138# define vsf_remap_i2c_irq_disable VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_irq_disable)
139# define vsf_remap_i2c_status VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_status)
140# define vsf_remap_i2c_capability VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_capability)
141# define vsf_remap_i2c_master_request VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_master_request)
142# define vsf_remap_i2c_get_transferred_count VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_get_transferred_count)
143# define vsf_remap_i2c_ctrl VSF_MCONNECT(VSF_I2C_CFG_IMP_REMAP_PREFIX, _i2c_ctrl)
145# define VSF_I2C_CFG_IMP_REMAP_FUNCTIONS \
146 vsf_err_t vsf_imp_i2c_init(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_cfg_t *cfg_ptr) \
148 VSF_HAL_ASSERT(i2c_ptr != NULL); \
149 return vsf_remap_i2c_init(i2c_ptr, cfg_ptr); \
151 void vsf_imp_i2c_fini(vsf_imp_i2c_t *i2c_ptr) \
153 VSF_HAL_ASSERT(i2c_ptr != NULL); \
154 vsf_remap_i2c_fini(i2c_ptr); \
156 fsm_rt_t vsf_imp_i2c_enable(vsf_imp_i2c_t *i2c_ptr) \
158 VSF_HAL_ASSERT(i2c_ptr != NULL); \
159 return vsf_remap_i2c_enable(i2c_ptr); \
161 fsm_rt_t vsf_imp_i2c_disable(vsf_imp_i2c_t *i2c_ptr) \
163 VSF_HAL_ASSERT(i2c_ptr != NULL); \
164 return vsf_remap_i2c_disable(i2c_ptr); \
166 void vsf_imp_i2c_irq_enable(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask) \
168 VSF_HAL_ASSERT(i2c_ptr != NULL); \
169 vsf_remap_i2c_irq_enable(i2c_ptr, irq_mask); \
171 void vsf_imp_i2c_irq_disable(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_irq_mask_t irq_mask) \
173 VSF_HAL_ASSERT(i2c_ptr != NULL); \
174 vsf_remap_i2c_irq_disable(i2c_ptr, irq_mask); \
176 vsf_i2c_status_t vsf_imp_i2c_status(vsf_imp_i2c_t *i2c_ptr) \
178 VSF_HAL_ASSERT(i2c_ptr != NULL); \
179 return vsf_remap_i2c_status(i2c_ptr); \
181 vsf_i2c_capability_t vsf_imp_i2c_capability(vsf_imp_i2c_t *i2c_ptr) \
183 VSF_HAL_ASSERT(i2c_ptr != NULL); \
184 return vsf_remap_i2c_capability(i2c_ptr); \
186 vsf_err_t vsf_imp_i2c_master_request(vsf_imp_i2c_t *i2c_ptr, \
188 vsf_imp_i2c_cmd_t cmd, \
190 uint8_t *buffer_ptr) \
192 VSF_HAL_ASSERT(i2c_ptr != NULL); \
193 return vsf_remap_i2c_master_request(i2c_ptr, address, cmd, count, buffer_ptr); \
195 uint_fast32_t vsf_imp_i2c_get_transferred_count(vsf_imp_i2c_t *i2c_ptr) \
197 VSF_HAL_ASSERT(i2c_ptr != NULL); \
198 VSF_HAL_ASSERT(vsf_remap_i2c_get_transferred_count!= NULL); \
199 return vsf_remap_i2c_get_transferred_count(i2c_ptr); \
201 vsf_err_t vsf_imp_i2c_ctrl(vsf_imp_i2c_t *i2c_ptr, vsf_i2c_ctrl_t ctrl, void *param) \
203 VSF_HAL_ASSERT(i2c_ptr != NULL); \
204 return vsf_remap_i2c_ctrl(i2c_ptr, ctrl, param); \
210#define VSF_HAL_TEMPLATE_IMP_NAME _i2c
211#define VSF_HAL_TEMPLATE_IMP_UPCASE_NAME _I2C
213#ifndef VSF_I2C_CFG_IMP_PREFIX
214# error "Please define VSF_I2C_CFG_IMP_PREFIX in i2c driver"
217#ifndef VSF_I2C_CFG_IMP_UPCASE_PREFIX
218# error "Please define VSF_I2C_CFG_IMP_UPCASE_PREFIX in i2c driver"
221#ifndef VSF_I2C_CFG_IMP_COUNT_MASK_PREFIX
222# define VSF_I2C_CFG_IMP_COUNT_MASK_PREFIX VSF_I2C_CFG_IMP_UPCASE_PREFIX
225#ifdef VSF_I2C_CFG_IMP_REMAP_FUNCTIONS
226# define VSF_HAL_CFG_IMP_REMAP_FUNCTIONS VSF_I2C_CFG_IMP_REMAP_FUNCTIONS
231#undef VSF_I2C_CFG_IMP_PREFIX
232#undef VSF_I2C_CFG_IMP_COUNT_MASK_PREFIX
233#undef VSF_I2C_CFG_IMP_UPCASE_PREFIX
234#undef VSF_I2C_CFG_IMP_LV0
235#undef VSF_I2C_CFG_IMP_REMAP_FUNCTIONS
236#undef VSF_I2C_CFG_IMP_HAS_OP
237#undef VSF_I2C_CFG_IMP_EXTERN_OP
240#undef vsf_imp_i2c_init
241#undef vsf_imp_i2c_fini
242#undef vsf_imp_i2c_enable
243#undef vsf_imp_i2c_disable
244#undef vsf_imp_i2c_irq_enable
245#undef vsf_imp_i2c_irq_disable
246#undef vsf_imp_i2c_status
247#undef vsf_imp_i2c_capability
248#undef vsf_imp_i2c_master_request
249#undef vsf_imp_i2c_get_transferred_count
250#undef vsf_imp_i2c_ctrl
252#undef vsf_remap_i2c_t
253#undef vsf_remap_i2c_init
254#undef vsf_remap_i2c_fini
255#undef vsf_remap_i2c_enable
256#undef vsf_remap_i2c_disable
257#undef vsf_remap_i2c_irq_enable
258#undef vsf_remap_i2c_irq_disable
259#undef vsf_remap_i2c_status
260#undef vsf_remap_i2c_capability
261#undef vsf_remap_i2c_master_request
262#undef vsf_remap_i2c_get_transferred_count
263#undef vsf_remap_i2c_ctrl
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:777
uint8_t support_no_start
Definition vsf_template_i2c.h:787
#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:909