Skip to content

Commit 249dad2

Browse files
Move to well known SPIClass from SPIClassRP2040
Some libraries like to hold pointers of *SPIClass, so use the well known name.
1 parent 35bbbce commit 249dad2

File tree

2 files changed

+27
-28
lines changed

2 files changed

+27
-28
lines changed

libraries/SPI/SPI.cpp

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#include <hardware/spi.h>
2323
#include <hardware/gpio.h>
2424

25-
SPIClassRP2040::SPIClassRP2040(spi_inst_t *spi, pin_size_t rx, pin_size_t cs, pin_size_t sck, pin_size_t tx) {
25+
SPIClass::SPIClass(spi_inst_t *spi, pin_size_t rx, pin_size_t cs, pin_size_t sck, pin_size_t tx) {
2626
_spi = spi;
2727
_running = false;
2828
_initted = false;
@@ -33,7 +33,7 @@ SPIClassRP2040::SPIClassRP2040(spi_inst_t *spi, pin_size_t rx, pin_size_t cs, pi
3333
_CS = cs;
3434
}
3535

36-
inline spi_cpol_t SPIClassRP2040::cpol() {
36+
inline spi_cpol_t SPIClass::cpol() {
3737
switch(_spis.getDataMode()) {
3838
case SPI_MODE0: return SPI_CPOL_0;
3939
case SPI_MODE1: return SPI_CPOL_0;
@@ -44,7 +44,7 @@ inline spi_cpol_t SPIClassRP2040::cpol() {
4444
return SPI_CPOL_0;
4545
}
4646

47-
inline spi_cpha_t SPIClassRP2040::cpha() {
47+
inline spi_cpha_t SPIClass::cpha() {
4848
switch(_spis.getDataMode()) {
4949
case SPI_MODE0: return SPI_CPHA_0;
5050
case SPI_MODE1: return SPI_CPHA_1;
@@ -55,19 +55,19 @@ inline spi_cpha_t SPIClassRP2040::cpha() {
5555
return SPI_CPHA_0;
5656
}
5757

58-
inline uint8_t SPIClassRP2040::reverseByte(uint8_t b) {
58+
inline uint8_t SPIClass::reverseByte(uint8_t b) {
5959
b = (b & 0xF0) >> 4 | (b & 0x0F) << 4;
6060
b = (b & 0xCC) >> 2 | (b & 0x33) << 2;
6161
b = (b & 0xAA) >> 1 | (b & 0x55) << 1;
6262
return b;
6363
}
6464

65-
inline uint16_t SPIClassRP2040::reverse16Bit(uint16_t w) {
65+
inline uint16_t SPIClass::reverse16Bit(uint16_t w) {
6666
return ( reverseByte(w & 0xff) << 8 ) | ( reverseByte(w >> 8) );
6767
}
6868

6969
// The HW can't do LSB first, only MSB first, so need to bitreverse
70-
void SPIClassRP2040::adjustBuffer(const void *s, void *d, size_t cnt, bool by16) {
70+
void SPIClass::adjustBuffer(const void *s, void *d, size_t cnt, bool by16) {
7171
if (_spis.getBitOrder() == MSBFIRST) {
7272
memcpy(d, s, cnt * (by16? 2 : 1));
7373
} else if (!by16) {
@@ -85,7 +85,7 @@ void SPIClassRP2040::adjustBuffer(const void *s, void *d, size_t cnt, bool by16)
8585
}
8686
}
8787

88-
byte SPIClassRP2040::transfer(uint8_t data) {
88+
byte SPIClass::transfer(uint8_t data) {
8989
uint8_t ret;
9090
if (!_initted) return 0;
9191
data = (_spis.getBitOrder() == MSBFIRST) ? data : reverseByte(data);
@@ -97,7 +97,7 @@ byte SPIClassRP2040::transfer(uint8_t data) {
9797
return ret;
9898
}
9999

100-
uint16_t SPIClassRP2040::transfer16(uint16_t data) {
100+
uint16_t SPIClass::transfer16(uint16_t data) {
101101
uint16_t ret;
102102
if (!_initted) {
103103
return 0;
@@ -111,7 +111,7 @@ uint16_t SPIClassRP2040::transfer16(uint16_t data) {
111111
return ret;
112112
}
113113

114-
void SPIClassRP2040::transfer(void *buf, size_t count) {
114+
void SPIClass::transfer(void *buf, size_t count) {
115115
DEBUGSPI("SPI::transfer(%p, %d)\n", buf, count);
116116
uint8_t *buff = reinterpret_cast<uint8_t *>(buf);
117117
for (auto i = 0; i < count; i++) {
@@ -122,7 +122,7 @@ void SPIClassRP2040::transfer(void *buf, size_t count) {
122122
DEBUGSPI("SPI::transfer completed\n");
123123
}
124124

125-
void SPIClassRP2040::beginTransaction(SPISettings settings) {
125+
void SPIClass::beginTransaction(SPISettings settings) {
126126
DEBUGSPI("SPI::beginTransaction(clk=%d, bo=%s\n", _spis.getClockFreq(), (_spis.getBitOrder() == MSBFIRST) ? "MSB":"LSB");
127127
_spis = settings;
128128
if (_initted) {
@@ -134,7 +134,7 @@ void SPIClassRP2040::beginTransaction(SPISettings settings) {
134134
_initted = true;
135135
}
136136

137-
void SPIClassRP2040::endTransaction(void) {
137+
void SPIClass::endTransaction(void) {
138138
DEBUGSPI("SPI::endTransaction()\n");
139139
if (_initted) {
140140
DEBUGSPI("SPI: deinitting currently active SPI\n");
@@ -143,7 +143,7 @@ void SPIClassRP2040::endTransaction(void) {
143143
_initted = false;
144144
}
145145

146-
bool SPIClassRP2040::setRX(pin_size_t pin) {
146+
bool SPIClass::setRX(pin_size_t pin) {
147147
constexpr uint32_t valid[2] = { __bitset({0, 4, 16, 20}) /* SPI0 */,
148148
__bitset({8, 12, 24, 28}) /* SPI1 */};
149149
if (_running) {
@@ -156,7 +156,7 @@ bool SPIClassRP2040::setRX(pin_size_t pin) {
156156
}
157157
}
158158

159-
bool SPIClassRP2040::setCS(pin_size_t pin) {
159+
bool SPIClass::setCS(pin_size_t pin) {
160160
constexpr uint32_t valid[2] = { __bitset({1, 5, 17, 21}) /* SPI0 */,
161161
__bitset({9, 13, 25, 29}) /* SPI1 */};
162162
if (_running) {
@@ -169,7 +169,7 @@ bool SPIClassRP2040::setCS(pin_size_t pin) {
169169
}
170170
}
171171

172-
bool SPIClassRP2040::setSCK(pin_size_t pin) {
172+
bool SPIClass::setSCK(pin_size_t pin) {
173173
constexpr uint32_t valid[2] = { __bitset({2, 6, 18, 22}) /* SPI0 */,
174174
__bitset({10, 14, 26}) /* SPI1 */};
175175
if (_running) {
@@ -182,7 +182,7 @@ bool SPIClassRP2040::setSCK(pin_size_t pin) {
182182
}
183183
}
184184

185-
bool SPIClassRP2040::setTX(pin_size_t pin) {
185+
bool SPIClass::setTX(pin_size_t pin) {
186186
constexpr uint32_t valid[2] = { __bitset({3, 7, 19, 23}) /* SPI0 */,
187187
__bitset({11, 15, 27}) /* SPI1 */};
188188
if (_running) {
@@ -195,7 +195,7 @@ bool SPIClassRP2040::setTX(pin_size_t pin) {
195195
}
196196
}
197197

198-
void SPIClassRP2040::begin(bool hwCS) {
198+
void SPIClass::begin(bool hwCS) {
199199
DEBUGSPI("SPI::begin(%d), rx=%d, cs=%d, sck=%d, tx=%d\n", hwCS, _RX, _CS, _SCK, _TX);
200200
gpio_set_function(_RX, GPIO_FUNC_SPI);
201201
_hwCS = hwCS;
@@ -208,7 +208,7 @@ void SPIClassRP2040::begin(bool hwCS) {
208208
beginTransaction(_spis);
209209
}
210210

211-
void SPIClassRP2040::end() {
211+
void SPIClass::end() {
212212
DEBUGSPI("SPI::end()\n");
213213
gpio_set_function(_RX, GPIO_FUNC_SIO);
214214
if (_hwCS) {
@@ -218,19 +218,19 @@ void SPIClassRP2040::end() {
218218
gpio_set_function(_TX, GPIO_FUNC_SIO);
219219
}
220220

221-
void SPIClassRP2040::setBitOrder(BitOrder order) {
221+
void SPIClass::setBitOrder(BitOrder order) {
222222
_spis = SPISettings( _spis.getClockFreq(), order, _spis.getDataMode() );
223223
beginTransaction(_spis);
224224
}
225225

226-
void SPIClassRP2040::setDataMode(uint8_t uc_mode) {
226+
void SPIClass::setDataMode(uint8_t uc_mode) {
227227
_spis = SPISettings( _spis.getClockFreq(), _spis.getBitOrder(), uc_mode );
228228
beginTransaction(_spis);
229229
}
230230

231-
void SPIClassRP2040::setClockDivider(uint8_t uc_div) {
231+
void SPIClass::setClockDivider(uint8_t uc_div) {
232232
(void) uc_div; // no-op
233233
}
234234

235-
SPIClassRP2040 SPI(spi0, 0, 1, 2, 3);
236-
SPIClassRP2040 SPI1(spi1, 8, 9, 10, 11);
235+
SPIClassSPI(spi0, 0, 1, 2, 3);
236+
SPIClassSPI1(spi1, 8, 9, 10, 11);

libraries/SPI/SPI.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,15 @@
1818
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
1919
*/
2020

21-
#ifndef _SPI_H_INCLUDED
22-
#define _SPI_H_INCLUDED
21+
#pragma once
2322

2423
#include <Arduino.h>
2524
#include <api/HardwareSPI.h>
2625
#include <hardware/spi.h>
2726

28-
class SPIClassRP2040 : public arduino::HardwareSPI {
27+
class SPIClass : public arduino::HardwareSPI {
2928
public:
30-
SPIClassRP2040(spi_inst_t *spi, pin_size_t rx, pin_size_t cs, pin_size_t sck, pin_size_t tx);
29+
SPIClass(spi_inst_t *spi, pin_size_t rx, pin_size_t cs, pin_size_t sck, pin_size_t tx);
3130

3231
// Send or receive 8- or 16-bit data. Returns read back value
3332
byte transfer(uint8_t data) override;
@@ -77,8 +76,8 @@ class SPIClassRP2040 : public arduino::HardwareSPI {
7776
bool _initted; // Transaction begun
7877
};
7978

80-
extern SPIClassRP2040 SPI;
81-
extern SPIClassRP2040 SPI1;
79+
extern SPIClass SPI;
80+
extern SPIClass SPI1;
8281

8382
#endif
8483

0 commit comments

Comments
 (0)