diff options
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.h | 62 |
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 |