diff --git a/libraries/SPISlave/src/SPISlave.cpp b/libraries/SPISlave/src/SPISlave.cpp index 9c429f5..d06319d 100644 --- a/libraries/SPISlave/src/SPISlave.cpp +++ b/libraries/SPISlave/src/SPISlave.cpp @@ -48,36 +48,6 @@ SPISlaveClass::SPISlaveClass(spi_inst_t *spi, pin_size_t rx, pin_size_t cs, pin_ _dataLeft = 0; } -inline spi_cpol_t SPISlaveClass::cpol(SPISettings _spis) { - switch (_spis.getDataMode()) { - case SPI_MODE0: - return SPI_CPOL_0; - case SPI_MODE1: - return SPI_CPOL_0; - case SPI_MODE2: - return SPI_CPOL_1; - case SPI_MODE3: - return SPI_CPOL_1; - } - // Error - return SPI_CPOL_0; -} - -inline spi_cpha_t SPISlaveClass::cpha(SPISettings _spis) { - switch (_spis.getDataMode()) { - case SPI_MODE0: - return SPI_CPHA_0; - case SPI_MODE1: - return SPI_CPHA_1; - case SPI_MODE2: - return SPI_CPHA_0; - case SPI_MODE3: - return SPI_CPHA_1; - } - // Error - return SPI_CPHA_0; -} - bool SPISlaveClass::setRX(pin_size_t pin) { #if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B constexpr uint64_t valid[2] = { __bitset({0, 4, 16, 20, 32, 26}) /* SPI0 */, @@ -243,7 +213,7 @@ void SPISlaveClass::begin(SPISettings spis) { spi_init(_spi, _spis.getClockFreq()); DEBUGSPI("SPISlave: actual baudrate=%u\n", spi_get_baudrate(_spi)); spi_set_slave(_spi, true); - spi_set_format(_spi, 8, cpol(spis), cpha(spis), SPI_MSB_FIRST); + spi_set_format(_spi, 8, _helper.cpol(spis), _helper.cpha(spis), SPI_MSB_FIRST); // Install our IRQ handler if (_spi == spi0) { diff --git a/libraries/SPISlave/src/SPISlave.h b/libraries/SPISlave/src/SPISlave.h index 0bd3845..e4801f2 100644 --- a/libraries/SPISlave/src/SPISlave.h +++ b/libraries/SPISlave/src/SPISlave.h @@ -21,6 +21,7 @@ #pragma once #include +#include // For SPIHelper #include #include #include @@ -69,10 +70,6 @@ public: void _handleIRQ(); private: - spi_cpol_t cpol(SPISettings _spis); - spi_cpha_t cpha(SPISettings _spis); - uint8_t reverseByte(uint8_t b); - uint16_t reverse16Bit(uint16_t w); void adjustBuffer(const void *s, void *d, size_t cnt, bool by16); spi_inst_t *_spi; @@ -89,6 +86,8 @@ private: size_t _dataLeft; // Received data will be returned in small chunks directly from a local buffer in _handleIRQ() + + SPIHelper _helper; }; extern SPISlaveClass SPISlave;