41#pragma GCC diagnostic push
42#pragma GCC diagnostic ignored "-Wpedantic"
49#include "driver/spi_common.h"
50#include "driver/spi_master.h"
58#pragma GCC diagnostic pop
114 hf_u32_t timeout_ms = 0)
noexcept override;
140 spi_device_handle_t
GetHandle()
const noexcept;
256 spi_host_device_t
GetHost()
const noexcept;
262 std::vector<std::unique_ptr<EspSpiDevice>>
devices_;
Abstract base class for SPI device implementations in the HardFOC system.
hf_spi_err_t
Definition BaseSpi.h:84
Consolidated MCU-specific type definitions for hardware abstraction (hf_* types).
uint32_t hf_u32_t
Platform-agnostic 32-bit unsigned integer type.
Definition HardwareTypes.h:52
uint8_t hf_u8_t
Platform-agnostic 8-bit unsigned integer type.
Definition HardwareTypes.h:40
uint16_t hf_u16_t
Platform-agnostic 16-bit unsigned integer type.
Definition HardwareTypes.h:46
Abstract base class for SPI device implementations.
Definition BaseSpi.h:184
Manages a single SPI bus (host). Handles bus init/deinit and device creation.
Definition EspSpi.h:169
hf_spi_bus_config_t config_
Bus configuration.
Definition EspSpi.h:259
EspSpiDevice * GetEspDevice(int device_index) noexcept
Get an ESP-specific device by index.
Definition EspSpi.cpp:167
std::vector< std::unique_ptr< EspSpiDevice > > devices_
Managed devices on this bus.
Definition EspSpi.h:262
int CreateDevice(const hf_spi_device_config_t &device_config) noexcept
Create a new SPI device on this bus and store it internally.
Definition EspSpi.cpp:133
const hf_spi_bus_config_t & GetConfig() const noexcept
Get the bus configuration.
Definition EspSpi.cpp:199
spi_host_device_t GetHost() const noexcept
Get the ESP-IDF host ID for this bus.
Definition EspSpi.cpp:203
bool initialized_
Initialization state.
Definition EspSpi.h:260
bool Initialize() noexcept
Initialize the SPI bus.
Definition EspSpi.cpp:60
PlatformMutex mutex_
Thread safety (mutable for const operations)
Definition EspSpi.h:261
~EspSpiBus() noexcept
Destructor. Automatically deinitializes the bus if needed.
Definition EspSpi.cpp:56
bool RemoveDevice(int device_index) noexcept
Remove a device from the bus.
Definition EspSpi.cpp:188
BaseSpi * GetDevice(int device_index) noexcept
Get a device by index.
Definition EspSpi.cpp:151
bool IsInitialized() const noexcept
Check if the bus is initialized.
Definition EspSpi.cpp:100
std::size_t GetDeviceCount() const noexcept
Get number of devices on this bus.
Definition EspSpi.cpp:183
bool Deinitialize() noexcept
Deinitialize the SPI bus and free resources.
Definition EspSpi.cpp:105
EspSpiBus(const hf_spi_bus_config_t &config) noexcept
Construct a new EspSpiBus.
Definition EspSpi.cpp:54
Represents a single SPI device on a bus (CS/config/handle).
Definition EspSpi.h:74
hf_spi_device_config_t config_
Device configuration.
Definition EspSpi.h:157
PlatformMutex mutex_
Thread safety.
Definition EspSpi.h:159
EspSpiDevice(EspSpiBus *parent, const hf_spi_device_config_t &config)
Construct a new EspSpiDevice.
Definition EspSpi.cpp:211
const void * GetDeviceConfig() const noexcept override
Get the device configuration for this SPI device.
Definition EspSpi.cpp:378
bool MarkAsDeinitialized() noexcept
Mark the device as deinitialized without ESP-IDF cleanup.
Definition EspSpi.cpp:289
spi_device_handle_t handle_
ESP-IDF device handle.
Definition EspSpi.h:156
hf_spi_err_t AcquireBus(hf_u32_t timeout_ms) noexcept
Acquire the SPI bus for exclusive use by this device.
Definition EspSpi.cpp:390
~EspSpiDevice() noexcept override
Destructor. Automatically deinitializes the device if needed.
Definition EspSpi.cpp:217
EspSpiBus * parent_bus_
Parent SPI bus.
Definition EspSpi.h:155
hf_spi_err_t ReleaseBus() noexcept
Release the bus lock after operations.
Definition EspSpi.cpp:409
hf_spi_err_t Transfer(const hf_u8_t *tx_data, hf_u8_t *rx_data, hf_u16_t length, hf_u32_t timeout_ms=0) noexcept override
Perform a full-duplex SPI transfer.
Definition EspSpi.cpp:318
bool initialized_
Initialization state.
Definition EspSpi.h:158
spi_device_handle_t GetHandle() const noexcept
Get the ESP-IDF device handle.
Definition EspSpi.cpp:382
bool Initialize() noexcept override
Initialize the SPI device (no-op if already initialized).
Definition EspSpi.cpp:222
const hf_spi_device_config_t & GetConfig() const noexcept
Get the device configuration.
Definition EspSpi.cpp:386
bool Deinitialize() noexcept override
Deinitialize the SPI device and free resources.
Definition EspSpi.cpp:299
hf_spi_err_t GetActualClockFrequency(hf_u32_t &actual_freq_hz) const noexcept
Get the actual clock frequency used by this device.
Definition EspSpi.cpp:417
Platform-agnostic SPI bus configuration for STM32.
Definition EspTypes_SPI.h:150
SPI device configuration for STM32.
Definition EspTypes_SPI.h:210