Skip to content

Commit

Permalink
Add Arduino SPI translation
Browse files Browse the repository at this point in the history
  • Loading branch information
LennartF22 committed Sep 24, 2024
1 parent 1a583e7 commit ece4520
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
42 changes: 42 additions & 0 deletions lib/SpiManager/src/SpiManager.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,39 @@
#include "SpiManager.h"

#ifdef ARDUINO
#include <SPI.h>
#endif

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) {
for (int i = 0; i < SPI_MANAGER_NUM_BUSES; ++i) {
if (available_buses[i])
Expand All @@ -28,6 +59,17 @@ bool SpiManager::claim_bus(spi_host_device_t &host_device) {
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) {
std::shared_ptr<SpiBus> shared_bus = get_shared_bus(bus_id);
if (!shared_bus)
Expand Down
7 changes: 7 additions & 0 deletions lib/SpiManager/src/SpiManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,15 @@ class SpiManager {
SpiManager(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 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);

Expand Down

0 comments on commit ece4520

Please sign in to comment.