Skip to content

Commit 08feacb

Browse files
committed
Renaming SPI constants to better match general style. Renaming setDataOrder() to setBitOrder(), and using existing LSBFIRST and MSBFIRST constants for it.
1 parent 3899ffc commit 08feacb

3 files changed

Lines changed: 49 additions & 105 deletions

File tree

libraries/SPI/SPI.cpp

Lines changed: 11 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -37,51 +37,23 @@ SPIClass::SPIClass()
3737
SPCR = _BV(SPE) | _BV(MSTR);
3838
}
3939

40-
void SPIClass::setDataOrder(SPIDataOrder _d)
40+
void SPIClass::setBitOrder(uint8_t bitOrder)
4141
{
42-
if (_d == SPI_DataOrder_LSB)
43-
SPCR |= _BV(DORD); // LSB
44-
else
45-
SPCR &= ~_BV(DORD); // MSB
42+
if(bitOrder == LSBFIRST) {
43+
SPCR |= _BV(DORD);
44+
} else {
45+
SPCR &= ~(_BV(DORD));
46+
}
4647
}
4748

48-
void SPIClass::setSPIMode(SPIMode _d)
49+
void SPIClass::setDataMode(uint8_t mode)
4950
{
50-
switch (_d) {
51-
case SPI_Mode_SampleRising:
52-
SPCR &= ~(_BV(CPOL) | _BV(CPHA));
53-
break;
54-
case SPI_Mode_SetupRising:
55-
SPCR &= ~_BV(CPOL);
56-
SPCR |= _BV(CPHA);
57-
break;
58-
case SPI_Mode_SampleFalling:
59-
SPCR &= ~_BV(CPHA);
60-
SPCR |= _BV(CPOL);
61-
break;
62-
case SPI_Mode_SetupFalling:
63-
SPCR |= _BV(CPOL) | _BV(CPHA);
64-
break;
65-
}
51+
SPCR = (SPCR & ~SPI_MODE_MASK) | mode;
6652
}
6753

68-
void SPIClass::setClockDivider(SPIClockDivider _d)
54+
void SPIClass::setClockDivider(uint8_t rate)
6955
{
70-
switch (_d) {
71-
case SPI_ClkDiv_4:
72-
SPCR &= ~(_BV(SPR1) | _BV(SPR0));
73-
break;
74-
case SPI_ClkDiv_16:
75-
SPCR &= ~_BV(SPR1);
76-
SPCR |= _BV(SPR0);
77-
break;
78-
case SPI_ClkDiv_64:
79-
SPCR |= _BV(SPR1);
80-
SPCR &= ~_BV(SPR0);
81-
break;
82-
case SPI_ClkDiv_128:
83-
SPCR |= _BV(SPR1) | _BV(SPR0);
84-
break;
85-
}
56+
SPCR = (SPCR & ~SPI_CLOCK_MASK) | (rate & SPI_CLOCK_MASK);
57+
SPSR = (SPSR & ~SPI_2XCLOCK_MASK) | (rate & SPI_2XCLOCK_MASK);
8658
}
8759

libraries/SPI/SPI.h

Lines changed: 20 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -15,24 +15,23 @@
1515
#include <WProgram.h>
1616
#include <avr/pgmspace.h>
1717

18-
enum SPIClockDivider {
19-
SPI_ClkDiv_4,
20-
SPI_ClkDiv_16,
21-
SPI_ClkDiv_64,
22-
SPI_ClkDiv_128,
23-
};
24-
25-
enum SPIDataOrder {
26-
SPI_DataOrder_LSB,
27-
SPI_DataOrder_MSB,
28-
};
29-
30-
enum SPIMode {
31-
SPI_Mode_SampleRising,
32-
SPI_Mode_SetupRising,
33-
SPI_Mode_SampleFalling,
34-
SPI_Mode_SetupFalling,
35-
};
18+
#define SPI_CLOCK_DIV4 0x00
19+
#define SPI_CLOCK_DIV16 0x01
20+
#define SPI_CLOCK_DIV64 0x02
21+
#define SPI_CLOCK_DIV128 0x03
22+
#define SPI_CLOCK_DIV2 0x04
23+
#define SPI_CLOCK_DIV8 0x05
24+
#define SPI_CLOCK_DIV32 0x06
25+
#define SPI_CLOCK_DIV64 0x07
26+
27+
#define SPI_MODE0 0x00
28+
#define SPI_MODE1 0x04
29+
#define SPI_MODE2 0x08
30+
#define SPI_MODE3 0x0C
31+
32+
#define SPI_MODE_MASK 0x0C // CPOL = bit 3, CPHA = bit 2 on SPCR
33+
#define SPI_CLOCK_MASK 0x03 // SPR1 = bit 1, SPR0 = bit 0 on SPCR
34+
#define SPI_2XCLOCK_MASK 0x01 // SPI2X = bit 0 on SPSR
3635

3736
class SPIClass {
3837
public:
@@ -48,13 +47,9 @@ class SPIClass {
4847
inline static void begin(); // Default
4948
inline static void end();
5049

51-
static void setDataOrder(SPIDataOrder);
52-
53-
static void setSPIMode(SPIMode);
54-
55-
static void setClockDivider(SPIClockDivider);
56-
inline static void doubleSpeed();
57-
inline static void noDoubleSpeed(); // Default
50+
static void setBitOrder(uint8_t);
51+
static void setDataMode(uint8_t);
52+
static void setClockDivider(uint8_t);
5853
};
5954

6055
extern SPIClass SPI;
@@ -82,12 +77,4 @@ void SPIClass::end() {
8277
SPCR &= ~_BV(SPE);
8378
}
8479

85-
void SPIClass::doubleSpeed() {
86-
SPSR |= _BV(SPI2X);
87-
}
88-
89-
void SPIClass::noDoubleSpeed() {
90-
SPSR &= ~_BV(SPI2X);
91-
}
92-
9380
#endif

libraries/SPI/keywords.txt

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -11,41 +11,26 @@ SPI KEYWORD1
1111
#######################################
1212
# Methods and Functions (KEYWORD2)
1313
#######################################
14-
send KEYWORD2
15-
sendInt16 KEYWORD2
16-
sendInt32 KEYWORD2
17-
initSS KEYWORD2
18-
setSS KEYWORD2
19-
resetSS KEYWORD2
20-
initSS2 KEYWORD2
21-
setSS2 KEYWORD2
22-
resetSS2 KEYWORD2
23-
initSS3 KEYWORD2
24-
setSS3 KEYWORD2
25-
resetSS3 KEYWORD2
26-
initSS4 KEYWORD2
27-
setSS4 KEYWORD2
28-
resetSS4 KEYWORD2
29-
30-
enableInterrupt KEYWORD2
31-
disableInterrupt KEYWORD2
32-
enable KEYWORD2
33-
disable KEYWORD2
34-
dataOrderLSB KEYWORD2
35-
dataOrderMSB KEYWORD2
36-
setSPIMode0 KEYWORD2
37-
setSPIMode1 KEYWORD2
38-
setSPIMode2 KEYWORD2
39-
setSPIMode3 KEYWORD2
40-
setClockDividerTo2 KEYWORD2
41-
setClockDividerTo4 KEYWORD2
42-
setClockDividerTo8 KEYWORD2
43-
setClockDividerTo16 KEYWORD2
44-
setClockDividerTo32 KEYWORD2
45-
setClockDividerTo64 KEYWORD2
46-
setClockDividerTo128 KEYWORD2
14+
begin KEYWORD2
15+
end KEYWORD2
16+
transfer KEYWORD2
17+
setBitOrder KEYWORD2
18+
setDataMode KEYWORD2
19+
setClockDivider KEYWORD2
4720

4821

4922
#######################################
5023
# Constants (LITERAL1)
5124
#######################################
25+
SPI_CLOCK_DIV4 LITERAL1
26+
SPI_CLOCK_DIV16 LITERAL1
27+
SPI_CLOCK_DIV64 LITERAL1
28+
SPI_CLOCK_DIV128 LITERAL1
29+
SPI_CLOCK_DIV2 LITERAL1
30+
SPI_CLOCK_DIV8 LITERAL1
31+
SPI_CLOCK_DIV32 LITERAL1
32+
SPI_CLOCK_DIV64 LITERAL1
33+
SPI_MODE0 LITERAL1
34+
SPI_MODE1 LITERAL1
35+
SPI_MODE2 LITERAL1
36+
SPI_MODE3 LITERAL1

0 commit comments

Comments
 (0)