Skip to content

Commit b4c28e7

Browse files
saloiddevyte
authored andcommitted
Spi slave improvments (#6580)
* Status length arg in begin() added * readable bits config * strange line removed * Empty constructor added Moved custom status length init overloaded constructor * Constructor without parameters added * Code formatting fix * default value in constructor removed * default begin method forwarded to new * Comments about bits added, else if except if
1 parent 9f2cfb8 commit b4c28e7

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

libraries/SPISlave/src/SPISlave.cpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,17 @@ void SPISlaveClass::_s_status_tx(void *arg)
6363
{
6464
reinterpret_cast<SPISlaveClass*>(arg)->_status_tx();
6565
}
66-
67-
void SPISlaveClass::begin()
66+
void SPISlaveClass::begin() //backwards compatibility
67+
{
68+
begin(4);
69+
}
70+
void SPISlaveClass::begin(uint8_t statusLength)
6871
{
6972
hspi_slave_onData(&_s_data_rx);
7073
hspi_slave_onDataSent(&_s_data_tx);
7174
hspi_slave_onStatus(&_s_status_rx);
7275
hspi_slave_onStatusSent(&_s_status_tx);
73-
hspi_slave_begin(4, this);
76+
hspi_slave_begin(statusLength, this);
7477
}
7578
void SPISlaveClass::end()
7679
{

libraries/SPISlave/src/SPISlave.h

+1
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ class SPISlaveClass
5252
{}
5353
~SPISlaveClass() {}
5454
void begin();
55+
void begin(uint8_t statusLength);
5556
void end();
5657
void setData(uint8_t * data, size_t len);
5758
void setData(const char * data)

libraries/SPISlave/src/hspi_slave.c

+8-3
Original file line numberDiff line numberDiff line change
@@ -72,11 +72,10 @@ void ICACHE_RAM_ATTR _hspi_slave_isr_handler(void *arg)
7272

7373
void hspi_slave_begin(uint8_t status_len, void * arg)
7474
{
75-
status_len &= 7;
7675
if(status_len > 4) {
7776
status_len = 4; //max 32 bits
7877
}
79-
if(status_len == 0) {
78+
else if(status_len == 0) {
8079
status_len = 1; //min 8 bits
8180
}
8281

@@ -85,7 +84,13 @@ void hspi_slave_begin(uint8_t status_len, void * arg)
8584
pinMode(MISO, SPECIAL);
8685
pinMode(MOSI, SPECIAL);
8786

88-
SPI1S = SPISE | SPISBE | 0x3E0; // SPI_SLAVE_REG
87+
SPI1S = SPISE | SPISBE | SPISTRIE | SPISWBIE | SPISRSIE | SPISWSIE | SPISRBIE; //(0x63E0)
88+
//setting config bits in SPI_SLAVE_REG, defined in "esp8266_peri.h" :
89+
//SPISE - spi slave enable
90+
//SPISBE - allows work (read/write) with buffer, without this only? status available
91+
//SPISTRIE - enables TRANS?? interrupt
92+
//other SPISxxIE - enables corresponding interrupts (read(R)/write(W) status(S) and buffer(B))
93+
8994
SPI1U = SPIUMISOH | SPIUCOMMAND | SPIUSSE; // SPI_USER_REG
9095
SPI1CLK = 0;
9196
SPI1U2 = (7 << SPILCOMMAND); // SPI_USER2_REG

0 commit comments

Comments
 (0)