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/furi-hal-include/furi-hal-spi.h')
-rw-r--r--firmware/targets/furi-hal-include/furi-hal-spi.h132
1 files changed, 57 insertions, 75 deletions
diff --git a/firmware/targets/furi-hal-include/furi-hal-spi.h b/firmware/targets/furi-hal-include/furi-hal-spi.h
index e42dcdc4..97913f63 100644
--- a/firmware/targets/furi-hal-include/furi-hal-spi.h
+++ b/firmware/targets/furi-hal-include/furi-hal-spi.h
@@ -1,106 +1,88 @@
#pragma once
-#include "main.h"
-#include "furi-hal-spi-config.h"
-#include <furi-hal-gpio.h>
+
+#include <furi-hal-spi-config.h>
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
-/**
- * Init SPI API
- */
+/** Initialize SPI HAL */
void furi_hal_spi_init();
-/* Bus Level API */
-
-/** Lock SPI bus
- * Takes bus mutex, if used
+/** Initialize SPI Bus
+ *
+ * @param handle pointer to FuriHalSpiBus instance
*/
-void furi_hal_spi_bus_lock(const FuriHalSpiBus* bus);
+void furi_hal_spi_bus_init(FuriHalSpiBus* bus);
-/** Unlock SPI bus
- * Releases BUS mutex, if used
+/** Deinitialize SPI Bus
+ *
+ * @param handle pointer to FuriHalSpiBus instance
*/
-void furi_hal_spi_bus_unlock(const FuriHalSpiBus* bus);
+void furi_hal_spi_bus_deinit(FuriHalSpiBus* bus);
-/** Configure SPI bus
- * @param bus - spi bus handler
- * @param config - spi configuration structure
+/** Initialize SPI Bus Handle
+ *
+ * @param handle pointer to FuriHalSpiBusHandle instance
*/
-void furi_hal_spi_bus_configure(const FuriHalSpiBus* bus, const LL_SPI_InitTypeDef* config);
+void furi_hal_spi_bus_handle_init(FuriHalSpiBusHandle* handle);
-/** SPI Receive
- * @param bus - spi bus handler
- * @param buffer - receive buffer
- * @param size - transaction size
- * @param timeout - bus operation timeout in ms
+/** Deinitialize SPI Bus Handle
+ *
+ * @param handle pointer to FuriHalSpiBusHandle instance
*/
-bool furi_hal_spi_bus_rx(const FuriHalSpiBus* bus, uint8_t* buffer, size_t size, uint32_t timeout);
+void furi_hal_spi_bus_handle_deinit(FuriHalSpiBusHandle* handle);
-/** SPI Transmit
- * @param bus - spi bus handler
- * @param buffer - transmit buffer
- * @param size - transaction size
- * @param timeout - bus operation timeout in ms
+/** Acquire SPI bus
+ *
+ * @warning blocking, calls `furi_crash` on programming error, CS transition is up to handler event routine
+ *
+ * @param handle pointer to FuriHalSpiBusHandle instance
*/
-bool furi_hal_spi_bus_tx(const FuriHalSpiBus* bus, uint8_t* buffer, size_t size, uint32_t timeout);
+void furi_hal_spi_acquire(FuriHalSpiBusHandle* handle);
-/** SPI Transmit and Receive
- * @param bus - spi bus handlere
- * @param tx_buffer - device handle
- * @param rx_buffer - device handle
- * @param size - transaction size
- * @param timeout - bus operation timeout in ms
+/** Release SPI bus
+ *
+ * @warning calls `furi_crash` on programming error, CS transition is up to handler event routine
+ *
+ * @param handle pointer to FuriHalSpiBusHandle instance
*/
-bool furi_hal_spi_bus_trx(const FuriHalSpiBus* bus, uint8_t* tx_buffer, uint8_t* rx_buffer, size_t size, uint32_t timeout);
+void furi_hal_spi_release(FuriHalSpiBusHandle* handle);
-/* Device Level API */
-
-/** Reconfigure SPI bus for device
- * @param device - device description
- */
-void furi_hal_spi_device_configure(const FuriHalSpiDevice* device);
-
-/** Get Device handle
- * And lock access to the corresponding SPI BUS
- * @param device_id - device identifier
- * @return device handle
- */
-const FuriHalSpiDevice* furi_hal_spi_device_get(FuriHalSpiDeviceId device_id);
-
-/** Return Device handle
- * And unlock access to the corresponding SPI BUS
- * @param device - device handle
- */
-void furi_hal_spi_device_return(const FuriHalSpiDevice* device);
-
-/** SPI Recieve
- * @param device - device handle
- * @param buffer - receive buffer
- * @param size - transaction size
- * @param timeout - bus operation timeout in ms
+/** SPI Receive
+ *
+ * @param handle pointer to FuriHalSpiBusHandle instance
+ * @param buffer receive buffer
+ * @param size transaction size (buffer size)
+ * @param timeout operation timeout in ms
+ *
+ * @return true on sucess
*/
-bool furi_hal_spi_device_rx(const FuriHalSpiDevice* device, uint8_t* buffer, size_t size, uint32_t timeout);
+bool furi_hal_spi_bus_rx(FuriHalSpiBusHandle* handle, uint8_t* buffer, size_t size, uint32_t timeout);
/** SPI Transmit
- * @param device - device handle
- * @param buffer - transmit buffer
- * @param size - transaction size
- * @param timeout - bus operation timeout in ms
+ *
+ * @param handle pointer to FuriHalSpiBusHandle instance
+ * @param buffer transmit buffer
+ * @param size transaction size (buffer size)
+ * @param timeout operation timeout in ms
+ *
+ * @return true on success
*/
-bool furi_hal_spi_device_tx(const FuriHalSpiDevice* device, uint8_t* buffer, size_t size, uint32_t timeout);
+bool furi_hal_spi_bus_tx(FuriHalSpiBusHandle* handle, uint8_t* buffer, size_t size, uint32_t timeout);
/** SPI Transmit and Receive
- * @param device - device handle
- * @param tx_buffer - device handle
- * @param rx_buffer - device handle
- * @param size - transaction size
- * @param timeout - bus operation timeout in ms
+ *
+ * @param handle pointer to FuriHalSpiBusHandle instance
+ * @param tx_buffer pointer to tx buffer
+ * @param rx_buffer pointer to rx buffer
+ * @param size transaction size (buffer size)
+ * @param timeout operation timeout in ms
+ *
+ * @return true on success
*/
-bool furi_hal_spi_device_trx(const FuriHalSpiDevice* device, uint8_t* tx_buffer, uint8_t* rx_buffer, size_t size, uint32_t timeout);
-
+bool furi_hal_spi_bus_trx(FuriHalSpiBusHandle* handle, uint8_t* tx_buffer, uint8_t* rx_buffer, size_t size, uint32_t timeout);
#ifdef __cplusplus
}