Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/ClusterM/flipperzero-firmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.h49
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