Skip to content

Commit df81f20

Browse files
Remove duplicated code from SPISlave (#3007)
Use the SPIHelper class already there for the SPI/SoftwareSPI
1 parent 6fc3165 commit df81f20

File tree

2 files changed

+4
-35
lines changed

2 files changed

+4
-35
lines changed

libraries/SPISlave/src/SPISlave.cpp

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -48,36 +48,6 @@ SPISlaveClass::SPISlaveClass(spi_inst_t *spi, pin_size_t rx, pin_size_t cs, pin_
4848
_dataLeft = 0;
4949
}
5050

51-
inline spi_cpol_t SPISlaveClass::cpol(SPISettings _spis) {
52-
switch (_spis.getDataMode()) {
53-
case SPI_MODE0:
54-
return SPI_CPOL_0;
55-
case SPI_MODE1:
56-
return SPI_CPOL_0;
57-
case SPI_MODE2:
58-
return SPI_CPOL_1;
59-
case SPI_MODE3:
60-
return SPI_CPOL_1;
61-
}
62-
// Error
63-
return SPI_CPOL_0;
64-
}
65-
66-
inline spi_cpha_t SPISlaveClass::cpha(SPISettings _spis) {
67-
switch (_spis.getDataMode()) {
68-
case SPI_MODE0:
69-
return SPI_CPHA_0;
70-
case SPI_MODE1:
71-
return SPI_CPHA_1;
72-
case SPI_MODE2:
73-
return SPI_CPHA_0;
74-
case SPI_MODE3:
75-
return SPI_CPHA_1;
76-
}
77-
// Error
78-
return SPI_CPHA_0;
79-
}
80-
8151
bool SPISlaveClass::setRX(pin_size_t pin) {
8252
#if defined(PICO_RP2350) && !PICO_RP2350A // RP2350B
8353
constexpr uint64_t valid[2] = { __bitset({0, 4, 16, 20, 32, 26}) /* SPI0 */,
@@ -243,7 +213,7 @@ void SPISlaveClass::begin(SPISettings spis) {
243213
spi_init(_spi, _spis.getClockFreq());
244214
DEBUGSPI("SPISlave: actual baudrate=%u\n", spi_get_baudrate(_spi));
245215
spi_set_slave(_spi, true);
246-
spi_set_format(_spi, 8, cpol(spis), cpha(spis), SPI_MSB_FIRST);
216+
spi_set_format(_spi, 8, _helper.cpol(spis), _helper.cpha(spis), SPI_MSB_FIRST);
247217

248218
// Install our IRQ handler
249219
if (_spi == spi0) {

libraries/SPISlave/src/SPISlave.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#pragma once
2222

2323
#include <Arduino.h>
24+
#include <SPI.h> // For SPIHelper
2425
#include <api/HardwareSPI.h>
2526
#include <hardware/spi.h>
2627
#include <functional>
@@ -69,10 +70,6 @@ class SPISlaveClass {
6970
void _handleIRQ();
7071

7172
private:
72-
spi_cpol_t cpol(SPISettings _spis);
73-
spi_cpha_t cpha(SPISettings _spis);
74-
uint8_t reverseByte(uint8_t b);
75-
uint16_t reverse16Bit(uint16_t w);
7673
void adjustBuffer(const void *s, void *d, size_t cnt, bool by16);
7774

7875
spi_inst_t *_spi;
@@ -89,6 +86,8 @@ class SPISlaveClass {
8986
size_t _dataLeft;
9087

9188
// Received data will be returned in small chunks directly from a local buffer in _handleIRQ()
89+
90+
SPIHelper _helper;
9291
};
9392

9493
extern SPISlaveClass SPISlave;

0 commit comments

Comments
 (0)