caffeine-hal 0.6.6
A Header-Defined Interface c library, it provides the hal layer for the Caffeine framework
Loading...
Searching...
No Matches
cfn_hal_i2c.h
Go to the documentation of this file.
1
26#ifndef CAFFEINE_HAL_HAL_I2C_H
27#define CAFFEINE_HAL_HAL_I2C_H
28
29#ifdef __cplusplus
30extern "C"
31{
32#endif
33
34/* Includes ---------------------------------------------------------*/
35#include "cfn_hal.h"
36#include "cfn_hal_base.h"
37#include "cfn_hal_gpio.h"
38#include "cfn_hal_types.h"
39
40/* Defines ----------------------------------------------------------*/
41
42/* Types Enums ------------------------------------------------------*/
43
58
73
89
90/* Types Structs ----------------------------------------------------*/
91
103
112
116typedef struct
117{
118 uint16_t slave_address;
119 const uint8_t *tx_payload;
121 uint8_t *rx_payload;
124
128typedef struct
129{
130 uint16_t dev_addr;
131 uint16_t mem_addr;
133 uint8_t *data;
134 size_t size;
136
137typedef struct cfn_hal_i2c_s cfn_hal_i2c_t;
138
142typedef struct
143{
145 uint16_t address;
147
149
159typedef void (*cfn_hal_i2c_callback_t)(cfn_hal_i2c_t *driver,
160 uint32_t event_mask,
161 uint32_t error_mask,
162 uint8_t *payload,
163 size_t nbr_of_bytes,
164 void *user_arg);
165
185
187
189
190/* Functions inline ------------------------------------------------- */
192 uint32_t peripheral_id,
193 struct cfn_hal_clock_s *clock,
194 void *dependency,
195 const cfn_hal_i2c_api_t *api,
196 const cfn_hal_i2c_phy_t *phy,
197 const cfn_hal_i2c_config_t *config,
198 cfn_hal_i2c_callback_t callback,
199 void *user_arg)
200{
202 driver, CFN_HAL_PERIPHERAL_TYPE_I2C, peripheral_id, clock, dependency, api, phy, config, callback, user_arg);
203}
204
212 const cfn_hal_i2c_config_t *config)
213{
214 if (driver == NULL || config == NULL)
215 {
217 }
218
219 if (config->speed >= CFN_HAL_I2C_CONFIG_SPEED_MAX)
220 {
222 }
223
224 return cfn_hal_base_config_validate(&driver->base, CFN_HAL_PERIPHERAL_TYPE_I2C, config);
225}
226
233{
234 if (!driver)
235 {
237 }
238 driver->base.vmt = (const struct cfn_hal_api_base_s *) driver->api;
239 cfn_hal_error_code_t error = cfn_hal_i2c_config_validate(driver, driver->config);
240 if (error != CFN_HAL_ERROR_OK)
241 {
242 return error;
243 }
244 return cfn_hal_base_init(&driver->base, CFN_HAL_PERIPHERAL_TYPE_I2C);
245}
246
253{
254 if (!driver)
255 {
257 }
259}
260
268{
269 if (!driver)
270 {
272 }
274 if (error != CFN_HAL_ERROR_OK)
275 {
276 return error;
277 }
278 {
279 driver->config = config;
280 }
281 return cfn_hal_base_config_set(&driver->base, CFN_HAL_PERIPHERAL_TYPE_I2C, (const void *) config);
282}
283
291{
292 if (!driver || !config || !driver->config)
293 {
295 }
296 *config = *(driver->config);
297 return CFN_HAL_ERROR_OK;
298}
299
308 const cfn_hal_i2c_callback_t callback,
309 void *user_arg)
310{
311 if (!driver)
312 {
314 }
315 {
316 driver->cb = callback;
317 driver->cb_user_arg = user_arg;
318 }
320 &driver->base, CFN_HAL_PERIPHERAL_TYPE_I2C, (cfn_hal_callback_t) callback, user_arg);
321}
322
337
345{
346 if (!driver)
347 {
349 }
350 return cfn_hal_base_event_enable(&driver->base, CFN_HAL_PERIPHERAL_TYPE_I2C, event_mask);
351}
352
360{
361 if (!driver)
362 {
364 }
365 return cfn_hal_base_event_disable(&driver->base, CFN_HAL_PERIPHERAL_TYPE_I2C, event_mask);
366}
367
375{
376 if (!driver)
377 {
379 }
380 return cfn_hal_base_event_get(&driver->base, CFN_HAL_PERIPHERAL_TYPE_I2C, event_mask);
381}
382
390{
391 if (!driver)
392 {
394 }
395 return cfn_hal_base_error_enable(&driver->base, CFN_HAL_PERIPHERAL_TYPE_I2C, error_mask);
396}
397
405{
406 if (!driver)
407 {
409 }
410 return cfn_hal_base_error_disable(&driver->base, CFN_HAL_PERIPHERAL_TYPE_I2C, error_mask);
411}
412
420{
421 if (!driver)
422 {
424 }
425 return cfn_hal_base_error_get(&driver->base, CFN_HAL_PERIPHERAL_TYPE_I2C, error_mask);
426}
427
428/* I2C Specific Functions ------------------------------------------- */
429
442
454
463 const cfn_hal_i2c_transaction_t *xfr,
464 uint32_t timeout)
465{
467 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_HAL_PERIPHERAL_TYPE_I2C, xfr_polling, driver, error, xfr, timeout);
468 return error;
469}
470
479 const cfn_hal_i2c_mem_transaction_t *mem_xfr,
480 uint32_t timeout)
481{
483 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_HAL_PERIPHERAL_TYPE_I2C, mem_read, driver, error, mem_xfr, timeout);
484 return error;
485}
486
495 const cfn_hal_i2c_mem_transaction_t *mem_xfr,
496 uint32_t timeout)
497{
499 CFN_HAL_CHECK_AND_CALL_FUNC_VARG(CFN_HAL_PERIPHERAL_TYPE_I2C, mem_write, driver, error, mem_xfr, timeout);
500 return error;
501}
502
516 const cfn_hal_i2c_config_t *config,
517 const cfn_hal_i2c_phy_t *phy,
518 struct cfn_hal_clock_s *clock,
519 void *dependency,
520 cfn_hal_i2c_callback_t callback,
521 void *user_arg);
523#ifdef __cplusplus
524}
525#endif
526
527#endif // CAFFEINE_HAL_HAL_I2C_H
Core Hardware Abstraction Layer definitions and macros.
#define CFN_HAL_CHECK_AND_CALL_FUNC_VARG(expected_peripheral_type, func, driver, result,...)
Definition cfn_hal.h:134
#define CFN_HAL_CHECK_AND_CALL_FUNC(expected_peripheral_type, func, driver, result)
Definition cfn_hal.h:114
#define CFN_HAL_INLINE
Macro for inlining HAL wrapper functions. Can be overridden with attribute((always_inline)) for perfo...
Definition cfn_hal.h:61
#define CFN_HAL_BIT(x)
Definition cfn_hal.h:79
#define CFN_HAL_CREATE_DRIVER_TYPE(prefix, config_type, api_type, phy_type, cb_type)
Definition cfn_hal.h:102
Base driver Hardware Abstraction Layer declarations.
CFN_HAL_BASE_API cfn_hal_error_code_t cfn_hal_base_error_disable(cfn_hal_driver_t *base, cfn_hal_peripheral_type_t expected_type, uint32_t error_mask)
Generic error disable for any driver. Deactivates exception-flow hardware triggers based on the provi...
Definition cfn_hal_base_impl.h:436
CFN_HAL_BASE_API cfn_hal_error_code_t cfn_hal_base_callback_register(cfn_hal_driver_t *base, cfn_hal_peripheral_type_t expected_type, cfn_hal_callback_t callback, void *user_arg)
Generic callback registration for any driver.
Definition cfn_hal_base_impl.h:254
CFN_HAL_BASE_API cfn_hal_error_code_t cfn_hal_base_error_enable(cfn_hal_driver_t *base, cfn_hal_peripheral_type_t expected_type, uint32_t error_mask)
Generic error enable for any driver. Activates exception-flow hardware triggers based on the provided...
Definition cfn_hal_base_impl.h:411
CFN_HAL_BASE_API cfn_hal_error_code_t cfn_hal_base_event_enable(cfn_hal_driver_t *base, cfn_hal_peripheral_type_t expected_type, uint32_t event_mask)
Generic event enable for any driver. Activates nominal hardware triggers based on the provided mask.
Definition cfn_hal_base_impl.h:331
CFN_HAL_BASE_API cfn_hal_error_code_t cfn_hal_base_event_get(cfn_hal_driver_t *base, cfn_hal_peripheral_type_t expected_type, uint32_t *event_mask)
Generic event status getter for any driver. Retrieves the current nominal hardware triggers/flags.
Definition cfn_hal_base_impl.h:386
CFN_HAL_BASE_API cfn_hal_error_code_t cfn_hal_base_error_get(cfn_hal_driver_t *base, cfn_hal_peripheral_type_t expected_type, uint32_t *error_mask)
Generic error status getter for any driver. Retrieves current exception-flow hardware flags/errors.
Definition cfn_hal_base_impl.h:461
CFN_HAL_BASE_API cfn_hal_error_code_t cfn_hal_base_config_set(cfn_hal_driver_t *base, cfn_hal_peripheral_type_t expected_type, const void *config)
Generic configuration setter for any driver.
Definition cfn_hal_base_impl.h:196
CFN_HAL_BASE_API cfn_hal_error_code_t cfn_hal_power_state_set(cfn_hal_driver_t *base, cfn_hal_peripheral_type_t expected_type, cfn_hal_power_state_t state)
Generic power state transition for any driver.
Definition cfn_hal_base_impl.h:279
CFN_HAL_BASE_API cfn_hal_error_code_t cfn_hal_base_deinit(cfn_hal_driver_t *base, cfn_hal_peripheral_type_t expected_type)
Generic deinitialization for any driver. Returns the driver to the CONSTRUCTED state and releases boa...
Definition cfn_hal_base_impl.h:144
#define CFN_HAL_VMT_CHECK(api_struct_type)
Compile-time check to ensure a peripheral API struct is compatible with the base layer....
Definition cfn_hal_base.h:91
CFN_HAL_BASE_API cfn_hal_error_code_t cfn_hal_base_init(cfn_hal_driver_t *base, cfn_hal_peripheral_type_t expected_type)
Generic initialization for any driver. Handles board-level hooks, type validation,...
Definition cfn_hal_base_impl.h:85
CFN_HAL_BASE_API cfn_hal_error_code_t cfn_hal_base_config_validate(const cfn_hal_driver_t *base, cfn_hal_peripheral_type_t expected_type, const void *config)
Generic validation for a configuration.
Definition cfn_hal_base_impl.h:234
CFN_HAL_BASE_API cfn_hal_error_code_t cfn_hal_base_event_disable(cfn_hal_driver_t *base, cfn_hal_peripheral_type_t expected_type, uint32_t event_mask)
Generic event disable for any driver. Deactivates nominal hardware triggers based on the provided mas...
Definition cfn_hal_base_impl.h:361
#define CFN_HAL_POPULATE_DRIVER( driver_ptr, periph_type, periph_id, clock_ptr, dep_ptr, api_ptr, phy_ptr, cfg_ptr, cb_func, cb_arg)
Standardizes the population of a peripheral driver structure. This macro ensures that the base driver...
Definition cfn_hal_base_impl.h:45
General Purpose Input/Output (GPIO) HAL API.
struct cfn_hal_i2c_s cfn_hal_i2c_t
Definition cfn_hal_i2c.h:137
CFN_HAL_INLINE void cfn_hal_i2c_populate(cfn_hal_i2c_t *driver, uint32_t peripheral_id, struct cfn_hal_clock_s *clock, void *dependency, const cfn_hal_i2c_api_t *api, const cfn_hal_i2c_phy_t *phy, const cfn_hal_i2c_config_t *config, cfn_hal_i2c_callback_t callback, void *user_arg)
Definition cfn_hal_i2c.h:191
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_config_get(cfn_hal_i2c_t *driver, cfn_hal_i2c_config_t *config)
Gets the current I2C configuration.
Definition cfn_hal_i2c.h:290
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_mem_write(cfn_hal_i2c_t *driver, const cfn_hal_i2c_mem_transaction_t *mem_xfr, uint32_t timeout)
Writes data to a specific memory address on an I2C device (blocking).
Definition cfn_hal_i2c.h:494
cfn_hal_i2c_error_t
I2C exception error flags.
Definition cfn_hal_i2c.h:63
@ CFN_HAL_I2C_ERROR_GENERAL
Definition cfn_hal_i2c.h:71
@ CFN_HAL_I2C_ERROR_ACK
Definition cfn_hal_i2c.h:66
@ CFN_HAL_I2C_ERROR_ARBITRATION
Definition cfn_hal_i2c.h:65
@ CFN_HAL_I2C_ERROR_NONE
Definition cfn_hal_i2c.h:64
@ CFN_HAL_I2C_ERROR_TIMEOUT
Definition cfn_hal_i2c.h:69
@ CFN_HAL_I2C_ERROR_PEC
Definition cfn_hal_i2c.h:68
@ CFN_HAL_I2C_ERROR_SMB
Definition cfn_hal_i2c.h:70
@ CFN_HAL_I2C_ERROR_OVERRUN
Definition cfn_hal_i2c.h:67
cfn_hal_i2c_event_t
I2C nominal event flags.
Definition cfn_hal_i2c.h:48
@ CFN_HAL_I2C_EVENT_NONE
Definition cfn_hal_i2c.h:49
@ CFN_HAL_I2C_EVENT_STOP_DET
Definition cfn_hal_i2c.h:56
@ CFN_HAL_I2C_EVENT_TX_COMPLETE
Definition cfn_hal_i2c.h:50
@ CFN_HAL_I2C_EVENT_ADDR_SENT
Definition cfn_hal_i2c.h:53
@ CFN_HAL_I2C_EVENT_START_SENT
Definition cfn_hal_i2c.h:52
@ CFN_HAL_I2C_EVENT_HEADER_SENT
Definition cfn_hal_i2c.h:54
@ CFN_HAL_I2C_EVENT_DATA_SENT
Definition cfn_hal_i2c.h:55
@ CFN_HAL_I2C_EVENT_RX_READY
Definition cfn_hal_i2c.h:51
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_event_enable(cfn_hal_i2c_t *driver, uint32_t event_mask)
Enables one or more I2C nominal events.
Definition cfn_hal_i2c.h:344
struct cfn_hal_i2c_config_s cfn_hal_i2c_config_t
I2C configuration structure.
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_callback_register(cfn_hal_i2c_t *driver, const cfn_hal_i2c_callback_t callback, void *user_arg)
Registers a callback for I2C events and errors.
Definition cfn_hal_i2c.h:307
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_xfr_irq(cfn_hal_i2c_t *driver, const cfn_hal_i2c_transaction_t *xfr)
Starts an I2C transaction using interrupts (non-blocking).
Definition cfn_hal_i2c.h:436
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_xfr_dma(cfn_hal_i2c_t *driver, const cfn_hal_i2c_transaction_t *xfr)
Starts an I2C transaction using DMA (non-blocking).
Definition cfn_hal_i2c.h:509
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_config_validate(const cfn_hal_i2c_t *driver, const cfn_hal_i2c_config_t *config)
Validates the I2C configuration.
Definition cfn_hal_i2c.h:211
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_xfr_irq_abort(cfn_hal_i2c_t *driver)
Aborts an ongoing non-blocking I2C transaction.
Definition cfn_hal_i2c.h:448
void(* cfn_hal_i2c_callback_t)(cfn_hal_i2c_t *driver, uint32_t event_mask, uint32_t error_mask, uint8_t *payload, size_t nbr_of_bytes, void *user_arg)
I2C callback signature.
Definition cfn_hal_i2c.h:159
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_event_get(cfn_hal_i2c_t *driver, uint32_t *event_mask)
Retrieves the current I2C nominal event status.
Definition cfn_hal_i2c.h:374
cfn_hal_error_code_t cfn_hal_i2c_construct(cfn_hal_i2c_t *driver, const cfn_hal_i2c_config_t *config, const cfn_hal_i2c_phy_t *phy, struct cfn_hal_clock_s *clock, void *dependency, cfn_hal_i2c_callback_t callback, void *user_arg)
Definition cfn_hal_i2c_port.c:69
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_init(cfn_hal_i2c_t *driver)
Initializes the I2C driver.
Definition cfn_hal_i2c.h:232
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_error_get(cfn_hal_i2c_t *driver, uint32_t *error_mask)
Retrieves the current I2C exception error status.
Definition cfn_hal_i2c.h:419
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_deinit(cfn_hal_i2c_t *driver)
Deinitializes the I2C driver.
Definition cfn_hal_i2c.h:252
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_mem_read(cfn_hal_i2c_t *driver, const cfn_hal_i2c_mem_transaction_t *mem_xfr, uint32_t timeout)
Reads data from a specific memory address on an I2C device (blocking).
Definition cfn_hal_i2c.h:478
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_error_disable(cfn_hal_i2c_t *driver, uint32_t error_mask)
Disables one or more I2C exception errors.
Definition cfn_hal_i2c.h:404
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_event_disable(cfn_hal_i2c_t *driver, uint32_t event_mask)
Disables one or more I2C nominal events.
Definition cfn_hal_i2c.h:359
cfn_hal_i2c_config_speed_t
I2C bus speeds.
Definition cfn_hal_i2c.h:78
@ CFN_HAL_I2C_CONFIG_SPEED_400KHZ
Definition cfn_hal_i2c.h:80
@ CFN_HAL_I2C_CONFIG_SPEED_3400KHZ
Definition cfn_hal_i2c.h:83
@ CFN_HAL_I2C_CONFIG_SPEED_CUSTOM
Definition cfn_hal_i2c.h:85
@ CFN_HAL_I2C_CONFIG_SPEED_5000KHZ
Definition cfn_hal_i2c.h:84
@ CFN_HAL_I2C_CONFIG_SPEED_1000KHZ
Definition cfn_hal_i2c.h:81
@ CFN_HAL_I2C_CONFIG_SPEED_3330KHZ
Definition cfn_hal_i2c.h:82
@ CFN_HAL_I2C_CONFIG_SPEED_MAX
Definition cfn_hal_i2c.h:87
@ CFN_HAL_I2C_CONFIG_SPEED_100KHZ
Definition cfn_hal_i2c.h:79
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_xfr_polling(cfn_hal_i2c_t *driver, const cfn_hal_i2c_transaction_t *xfr, uint32_t timeout)
Executes an I2C transaction using polling (blocking).
Definition cfn_hal_i2c.h:462
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_config_set(cfn_hal_i2c_t *driver, const cfn_hal_i2c_config_t *config)
Sets the I2C configuration.
Definition cfn_hal_i2c.h:267
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_power_state_set(cfn_hal_i2c_t *driver, cfn_hal_power_state_t state)
Sets the I2C power state.
Definition cfn_hal_i2c.h:329
cfn_hal_error_code_t cfn_hal_i2c_destruct(cfn_hal_i2c_t *driver)
Definition cfn_hal_i2c_port.c:85
CFN_HAL_INLINE cfn_hal_error_code_t cfn_hal_i2c_error_enable(cfn_hal_i2c_t *driver, uint32_t error_mask)
Enables one or more I2C exception errors.
Definition cfn_hal_i2c.h:389
Common type definitions and enums for the HAL.
void(* cfn_hal_callback_t)(void)
Generic function pointer for HAL callbacks. Used as a standard-compliant carrier in the base layer.
Definition cfn_hal_types.h:98
#define CFN_HAL_PERIPHERAL_TYPE_I2C
Definition cfn_hal_types.h:126
enum cfn_hal_error_codes cfn_hal_error_code_t
cfn_hal_power_state_t
Definition cfn_hal_types.h:156
@ CFN_HAL_ERROR_OK
Definition cfn_hal_types.h:50
@ CFN_HAL_ERROR_BAD_PARAM
Definition cfn_hal_types.h:53
@ CFN_HAL_ERROR_BAD_CONFIG
Definition cfn_hal_types.h:60
Base API structure for all peripheral drivers. Every peripheral-specific API struct MUST have this as...
Definition cfn_hal_base.h:63
Lightweight handle to a specific GPIO pin. Used by other peripherals to reference physical pins.
Definition cfn_hal_gpio.h:173
I2C Virtual Method Table (VMT).
Definition cfn_hal_i2c.h:170
cfn_hal_api_base_t base
Definition cfn_hal_i2c.h:171
cfn_hal_error_code_t(* xfr_irq_abort)(cfn_hal_i2c_t *driver)
Definition cfn_hal_i2c.h:175
cfn_hal_error_code_t(* mem_read)(cfn_hal_i2c_t *driver, const cfn_hal_i2c_mem_transaction_t *mem_xfr, uint32_t timeout)
Definition cfn_hal_i2c.h:177
cfn_hal_error_code_t(* xfr_irq)(cfn_hal_i2c_t *driver, const cfn_hal_i2c_transaction_t *xfr)
Definition cfn_hal_i2c.h:174
cfn_hal_error_code_t(* xfr_polling)(cfn_hal_i2c_t *driver, const cfn_hal_i2c_transaction_t *xfr, uint32_t timeout)
Definition cfn_hal_i2c.h:176
cfn_hal_error_code_t(* mem_write)(cfn_hal_i2c_t *driver, const cfn_hal_i2c_mem_transaction_t *mem_xfr, uint32_t timeout)
Definition cfn_hal_i2c.h:180
cfn_hal_error_code_t(* xfr_dma)(cfn_hal_i2c_t *driver, const cfn_hal_i2c_transaction_t *xfr)
Definition cfn_hal_i2c.h:183
I2C configuration structure.
Definition cfn_hal_i2c.h:108
cfn_hal_i2c_config_speed_t speed
Definition cfn_hal_i2c.h:109
void * custom
Definition cfn_hal_i2c.h:110
I2C Device addressing association.
Definition cfn_hal_i2c.h:143
cfn_hal_i2c_t * i2c
Definition cfn_hal_i2c.h:144
uint16_t address
Definition cfn_hal_i2c.h:145
I2C memory access transaction structure.
Definition cfn_hal_i2c.h:129
uint16_t dev_addr
Definition cfn_hal_i2c.h:130
uint16_t mem_addr
Definition cfn_hal_i2c.h:131
size_t size
Definition cfn_hal_i2c.h:134
uint8_t mem_addr_size
Definition cfn_hal_i2c.h:132
uint8_t * data
Definition cfn_hal_i2c.h:133
I2C hardware physical mapping.
Definition cfn_hal_i2c.h:96
cfn_hal_gpio_pin_handle_t * irq
Definition cfn_hal_i2c.h:100
void * user_arg
Definition cfn_hal_i2c.h:101
cfn_hal_gpio_pin_handle_t * scl
Definition cfn_hal_i2c.h:99
void * instance
Definition cfn_hal_i2c.h:97
cfn_hal_gpio_pin_handle_t * sda
Definition cfn_hal_i2c.h:98
Standard I2C transaction structure.
Definition cfn_hal_i2c.h:117
size_t nbr_of_tx_bytes
Definition cfn_hal_i2c.h:120
size_t nbr_of_rx_bytes
Definition cfn_hal_i2c.h:122
const uint8_t * tx_payload
Definition cfn_hal_i2c.h:119
uint8_t * rx_payload
Definition cfn_hal_i2c.h:121
uint16_t slave_address
Definition cfn_hal_i2c.h:118