diff options
Diffstat (limited to 'firmware/targets/f7/furi-hal/furi-hal-i2c-types.h')
-rw-r--r-- | firmware/targets/f7/furi-hal/furi-hal-i2c-types.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/firmware/targets/f7/furi-hal/furi-hal-i2c-types.h b/firmware/targets/f7/furi-hal/furi-hal-i2c-types.h new file mode 100644 index 00000000..4f7aab91 --- /dev/null +++ b/firmware/targets/f7/furi-hal/furi-hal-i2c-types.h @@ -0,0 +1,49 @@ +#pragma once + +#include <stm32wbxx_ll_i2c.h> + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct FuriHalI2cBus FuriHalI2cBus; +typedef struct FuriHalI2cBusHandle FuriHalI2cBusHandle; + +/** FuriHal i2c bus states */ +typedef enum { + FuriHalI2cBusEventInit, /**< Bus initialization event, called on system start */ + FuriHalI2cBusEventDeinit, /**< Bus deinitialization event, called on system stop */ + FuriHalI2cBusEventLock, /**< Bus lock event, called before activation */ + FuriHalI2cBusEventUnlock, /**< Bus unlock event, called after deactivation */ + FuriHalI2cBusEventActivate, /**< Bus activation event, called before handle activation */ + FuriHalI2cBusEventDeactivate, /**< Bus deactivation event, called after handle deactivation */ +} FuriHalI2cBusEvent; + +/** FuriHal i2c bus event callback */ +typedef void (*FuriHalI2cBusEventCallback)(FuriHalI2cBus* bus, FuriHalI2cBusEvent event); + +/** FuriHal i2c bus */ +struct FuriHalI2cBus { + I2C_TypeDef* i2c; + FuriHalI2cBusHandle* current_handle; + FuriHalI2cBusEventCallback callback; +}; + +/** FuriHal i2c handle states */ +typedef enum { + FuriHalI2cBusHandleEventActivate, /**< Handle activate: connect gpio and apply bus config */ + FuriHalI2cBusHandleEventDeactivate, /**< Handle deactivate: disconnect gpio and reset bus config */ +} FuriHalI2cBusHandleEvent; + +/** FuriHal i2c handle event callback */ +typedef void (*FuriHalI2cBusHandleEventCallback)(FuriHalI2cBusHandle* handle, FuriHalI2cBusHandleEvent event); + +/** FuriHal i2c handle */ +struct FuriHalI2cBusHandle { + FuriHalI2cBus* bus; + FuriHalI2cBusHandleEventCallback callback; +}; + +#ifdef __cplusplus +} +#endif
\ No newline at end of file |