Add Arduino SPI translation
This commit is contained in:
parent
1a583e765d
commit
ece4520687
@ -1,8 +1,39 @@
|
|||||||
#include "SpiManager.h"
|
#include "SpiManager.h"
|
||||||
|
|
||||||
|
#ifdef ARDUINO
|
||||||
|
#include <SPI.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
SpiManager::SpiManager() {
|
SpiManager::SpiManager() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ARDUINO
|
||||||
|
|
||||||
|
std::optional<uint8_t> SpiManager::to_arduino(spi_host_device_t host_device) {
|
||||||
|
switch (host_device) {
|
||||||
|
#if CONFIG_IDF_TARGET_ESP32
|
||||||
|
case SPI1_HOST:
|
||||||
|
return FSPI;
|
||||||
|
case SPI2_HOST:
|
||||||
|
return HSPI;
|
||||||
|
case SPI3_HOST:
|
||||||
|
return VSPI;
|
||||||
|
#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
|
||||||
|
case SPI2_HOST:
|
||||||
|
return FSPI;
|
||||||
|
case SPI3_HOST:
|
||||||
|
return HSPI;
|
||||||
|
#elif CONFIG_IDF_TARGET_ESP32C3
|
||||||
|
case SPI2_HOST:
|
||||||
|
return FSPI;
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
|
return std::nullopt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
bool SpiManager::register_bus(spi_host_device_t host_device) {
|
bool SpiManager::register_bus(spi_host_device_t host_device) {
|
||||||
for (int i = 0; i < SPI_MANAGER_NUM_BUSES; ++i) {
|
for (int i = 0; i < SPI_MANAGER_NUM_BUSES; ++i) {
|
||||||
if (available_buses[i])
|
if (available_buses[i])
|
||||||
@ -28,6 +59,17 @@ bool SpiManager::claim_bus(spi_host_device_t &host_device) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ARDUINO
|
||||||
|
|
||||||
|
std::optional<uint8_t> SpiManager::claim_bus_arduino() {
|
||||||
|
spi_host_device_t host_device;
|
||||||
|
if (!claim_bus(host_device))
|
||||||
|
return std::nullopt;
|
||||||
|
return to_arduino(host_device);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
spi_device_handle_t SpiManager::alloc_device(const std::string &bus_id, const std::shared_ptr<SpiBusConfig> &bus_config, spi_device_interface_config_t &device_config) {
|
spi_device_handle_t SpiManager::alloc_device(const std::string &bus_id, const std::shared_ptr<SpiBusConfig> &bus_config, spi_device_interface_config_t &device_config) {
|
||||||
std::shared_ptr<SpiBus> shared_bus = get_shared_bus(bus_id);
|
std::shared_ptr<SpiBus> shared_bus = get_shared_bus(bus_id);
|
||||||
if (!shared_bus)
|
if (!shared_bus)
|
||||||
|
|||||||
@ -18,8 +18,15 @@ public:
|
|||||||
SpiManager(const SpiManager&) = delete;
|
SpiManager(const SpiManager&) = delete;
|
||||||
SpiManager &operator=(const SpiManager&) = delete;
|
SpiManager &operator=(const SpiManager&) = delete;
|
||||||
|
|
||||||
|
#ifdef ARDUINO
|
||||||
|
static std::optional<uint8_t> to_arduino(spi_host_device_t host_device);
|
||||||
|
#endif
|
||||||
|
|
||||||
bool register_bus(spi_host_device_t host_device);
|
bool register_bus(spi_host_device_t host_device);
|
||||||
bool claim_bus(spi_host_device_t &host_device);
|
bool claim_bus(spi_host_device_t &host_device);
|
||||||
|
#ifdef ARDUINO
|
||||||
|
std::optional<uint8_t> claim_bus_arduino();
|
||||||
|
#endif
|
||||||
|
|
||||||
spi_device_handle_t alloc_device(const std::string &bus_id, const std::shared_ptr<SpiBusConfig> &bus_config, spi_device_interface_config_t &device_config);
|
spi_device_handle_t alloc_device(const std::string &bus_id, const std::shared_ptr<SpiBusConfig> &bus_config, spi_device_interface_config_t &device_config);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user