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-spi-types.h')
-rw-r--r--firmware/targets/f7/furi-hal/furi-hal-spi-types.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/firmware/targets/f7/furi-hal/furi-hal-spi-types.h b/firmware/targets/f7/furi-hal/furi-hal-spi-types.h
new file mode 100644
index 00000000..c7520f4a
--- /dev/null
+++ b/firmware/targets/f7/furi-hal/furi-hal-spi-types.h
@@ -0,0 +1,62 @@
+#pragma once
+
+#include <stdint.h>
+#include <stddef.h>
+
+#include <furi-hal-gpio.h>
+
+#include <stm32wbxx_ll_spi.h>
+#include <stm32wbxx_ll_rcc.h>
+#include <stm32wbxx_ll_bus.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct FuriHalSpiBus FuriHalSpiBus;
+typedef struct FuriHalSpiBusHandle FuriHalSpiBusHandle;
+
+/** FuriHal spi bus states */
+typedef enum {
+ FuriHalSpiBusEventInit, /**< Bus initialization event, called on system start */
+ FuriHalSpiBusEventDeinit, /**< Bus deinitialization event, called on system stop */
+ FuriHalSpiBusEventLock, /**< Bus lock event, called before activation */
+ FuriHalSpiBusEventUnlock, /**< Bus unlock event, called after deactivation */
+ FuriHalSpiBusEventActivate, /**< Bus activation event, called before handle activation */
+ FuriHalSpiBusEventDeactivate, /**< Bus deactivation event, called after handle deactivation */
+} FuriHalSpiBusEvent;
+
+/** FuriHal spi bus event callback */
+typedef void (*FuriHalSpiBusEventCallback)(FuriHalSpiBus* bus, FuriHalSpiBusEvent event);
+
+/** FuriHal spi bus */
+struct FuriHalSpiBus {
+ SPI_TypeDef* spi;
+ FuriHalSpiBusEventCallback callback;
+ FuriHalSpiBusHandle* current_handle;
+};
+
+/** FuriHal spi handle states */
+typedef enum {
+ FuriHalSpiBusHandleEventInit, /**< Handle init, called on system start, initialize gpio for idle state */
+ FuriHalSpiBusHandleEventDeinit, /**< Handle deinit, called on system stop, deinitialize gpio for default state */
+ FuriHalSpiBusHandleEventActivate, /**< Handle activate: connect gpio and apply bus config */
+ FuriHalSpiBusHandleEventDeactivate, /**< Handle deactivate: disconnect gpio and reset bus config */
+} FuriHalSpiBusHandleEvent;
+
+/** FuriHal spi handle event callback */
+typedef void (*FuriHalSpiBusHandleEventCallback)(FuriHalSpiBusHandle* handle, FuriHalSpiBusHandleEvent event);
+
+/** FuriHal spi handle */
+struct FuriHalSpiBusHandle {
+ FuriHalSpiBus* bus;
+ FuriHalSpiBusHandleEventCallback callback;
+ const GpioPin* miso;
+ const GpioPin* mosi;
+ const GpioPin* sck;
+ const GpioPin* cs;
+};
+
+#ifdef __cplusplus
+}
+#endif \ No newline at end of file