From daba8e39da3f31922c4e6dba322e94cf7e02babd Mon Sep 17 00:00:00 2001 From: Saloid Date: Wed, 2 Oct 2019 00:11:52 +0300 Subject: [PATCH 1/9] Status length arg in begin() added --- libraries/SPISlave/src/SPISlave.cpp | 4 ++-- libraries/SPISlave/src/SPISlave.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/SPISlave/src/SPISlave.cpp b/libraries/SPISlave/src/SPISlave.cpp index a88915b518..e1e5bbe07b 100644 --- a/libraries/SPISlave/src/SPISlave.cpp +++ b/libraries/SPISlave/src/SPISlave.cpp @@ -64,13 +64,13 @@ void SPISlaveClass::_s_status_tx(void *arg) reinterpret_cast(arg)->_status_tx(); } -void SPISlaveClass::begin() +void SPISlaveClass::begin(uint8_t statusLength) { hspi_slave_onData(&_s_data_rx); hspi_slave_onDataSent(&_s_data_tx); hspi_slave_onStatus(&_s_status_rx); hspi_slave_onStatusSent(&_s_status_tx); - hspi_slave_begin(4, this); + hspi_slave_begin(statusLength, this); } void SPISlaveClass::end() { diff --git a/libraries/SPISlave/src/SPISlave.h b/libraries/SPISlave/src/SPISlave.h index a52495cf9c..7b4708da23 100644 --- a/libraries/SPISlave/src/SPISlave.h +++ b/libraries/SPISlave/src/SPISlave.h @@ -51,7 +51,7 @@ class SPISlaveClass , _status_sent_cb(NULL) {} ~SPISlaveClass() {} - void begin(); + void begin(uint8_t statusLength = 4); void end(); void setData(uint8_t * data, size_t len); void setData(const char * data) From de9590d96516e2a8a7892845e95e7262e36999f3 Mon Sep 17 00:00:00 2001 From: Saloid Date: Wed, 2 Oct 2019 00:16:31 +0300 Subject: [PATCH 2/9] readable bits config --- libraries/SPISlave/src/hspi_slave.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SPISlave/src/hspi_slave.c b/libraries/SPISlave/src/hspi_slave.c index a2cbf9d466..7a459ecaa3 100644 --- a/libraries/SPISlave/src/hspi_slave.c +++ b/libraries/SPISlave/src/hspi_slave.c @@ -85,7 +85,7 @@ void hspi_slave_begin(uint8_t status_len, void * arg) pinMode(MISO, SPECIAL); pinMode(MOSI, SPECIAL); - SPI1S = SPISE | SPISBE | 0x3E0; // SPI_SLAVE_REG + SPI1S = SPISE | SPISBE | SPISRBIE | SPISWBIE | SPISRSIE | SPISWSIE | SPISTRIE; // 0x3E0 // SPI_SLAVE_REG SPI1U = SPIUMISOH | SPIUCOMMAND | SPIUSSE; // SPI_USER_REG SPI1CLK = 0; SPI1U2 = (7 << SPILCOMMAND); // SPI_USER2_REG From 8ea1fb3b0651a7fae4b91184822e199a44238b58 Mon Sep 17 00:00:00 2001 From: Saloid Date: Wed, 2 Oct 2019 00:18:51 +0300 Subject: [PATCH 3/9] strange line removed --- libraries/SPISlave/src/hspi_slave.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libraries/SPISlave/src/hspi_slave.c b/libraries/SPISlave/src/hspi_slave.c index 7a459ecaa3..92d2b67258 100644 --- a/libraries/SPISlave/src/hspi_slave.c +++ b/libraries/SPISlave/src/hspi_slave.c @@ -72,7 +72,6 @@ void ICACHE_RAM_ATTR _hspi_slave_isr_handler(void *arg) void hspi_slave_begin(uint8_t status_len, void * arg) { - status_len &= 7; if(status_len > 4) { status_len = 4; //max 32 bits } From c3f5ee5a44cb8b8dd0ef4a822836a91d27af341d Mon Sep 17 00:00:00 2001 From: Dmytro Date: Mon, 28 Oct 2019 18:56:35 +0200 Subject: [PATCH 4/9] Empty constructor added Moved custom status length init overloaded constructor --- libraries/SPISlave/src/SPISlave.h | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries/SPISlave/src/SPISlave.h b/libraries/SPISlave/src/SPISlave.h index 7b4708da23..4503a87721 100644 --- a/libraries/SPISlave/src/SPISlave.h +++ b/libraries/SPISlave/src/SPISlave.h @@ -51,6 +51,7 @@ class SPISlaveClass , _status_sent_cb(NULL) {} ~SPISlaveClass() {} + void begin(); void begin(uint8_t statusLength = 4); void end(); void setData(uint8_t * data, size_t len); From f9a23f87f0f95cb96d33b748619ef815a68f08b2 Mon Sep 17 00:00:00 2001 From: Dmytro Date: Mon, 28 Oct 2019 18:58:32 +0200 Subject: [PATCH 5/9] Constructor without parameters added --- libraries/SPISlave/src/SPISlave.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libraries/SPISlave/src/SPISlave.cpp b/libraries/SPISlave/src/SPISlave.cpp index e1e5bbe07b..fab3e27843 100644 --- a/libraries/SPISlave/src/SPISlave.cpp +++ b/libraries/SPISlave/src/SPISlave.cpp @@ -64,6 +64,15 @@ void SPISlaveClass::_s_status_tx(void *arg) reinterpret_cast(arg)->_status_tx(); } +void SPISlaveClass::begin() +{ + hspi_slave_onData(&_s_data_rx); + hspi_slave_onDataSent(&_s_data_tx); + hspi_slave_onStatus(&_s_status_rx); + hspi_slave_onStatusSent(&_s_status_tx); + hspi_slave_begin(4, this); +} + void SPISlaveClass::begin(uint8_t statusLength) { hspi_slave_onData(&_s_data_rx); From 120490766bc9b0823edb4f804ccc14683cea292d Mon Sep 17 00:00:00 2001 From: Dmytro Date: Mon, 28 Oct 2019 18:59:02 +0200 Subject: [PATCH 6/9] Code formatting fix --- libraries/SPISlave/src/SPISlave.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/libraries/SPISlave/src/SPISlave.cpp b/libraries/SPISlave/src/SPISlave.cpp index fab3e27843..c27e0412c7 100644 --- a/libraries/SPISlave/src/SPISlave.cpp +++ b/libraries/SPISlave/src/SPISlave.cpp @@ -63,7 +63,6 @@ void SPISlaveClass::_s_status_tx(void *arg) { reinterpret_cast(arg)->_status_tx(); } - void SPISlaveClass::begin() { hspi_slave_onData(&_s_data_rx); @@ -72,7 +71,6 @@ void SPISlaveClass::begin() hspi_slave_onStatusSent(&_s_status_tx); hspi_slave_begin(4, this); } - void SPISlaveClass::begin(uint8_t statusLength) { hspi_slave_onData(&_s_data_rx); From 4dacdfbc306f355af52e39f45b3139f4f5c1fb7f Mon Sep 17 00:00:00 2001 From: Dmytro Date: Mon, 28 Oct 2019 19:00:07 +0200 Subject: [PATCH 7/9] default value in constructor removed --- libraries/SPISlave/src/SPISlave.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/SPISlave/src/SPISlave.h b/libraries/SPISlave/src/SPISlave.h index 4503a87721..86b30875f2 100644 --- a/libraries/SPISlave/src/SPISlave.h +++ b/libraries/SPISlave/src/SPISlave.h @@ -52,7 +52,7 @@ class SPISlaveClass {} ~SPISlaveClass() {} void begin(); - void begin(uint8_t statusLength = 4); + void begin(uint8_t statusLength); void end(); void setData(uint8_t * data, size_t len); void setData(const char * data) From e80f2bdf4a15bc3a4ee0c0550fa629fa15c6bd65 Mon Sep 17 00:00:00 2001 From: Dmytro Date: Wed, 30 Oct 2019 20:45:10 +0200 Subject: [PATCH 8/9] default begin method forwarded to new --- libraries/SPISlave/src/SPISlave.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/libraries/SPISlave/src/SPISlave.cpp b/libraries/SPISlave/src/SPISlave.cpp index c27e0412c7..3d58a86721 100644 --- a/libraries/SPISlave/src/SPISlave.cpp +++ b/libraries/SPISlave/src/SPISlave.cpp @@ -63,13 +63,9 @@ void SPISlaveClass::_s_status_tx(void *arg) { reinterpret_cast(arg)->_status_tx(); } -void SPISlaveClass::begin() +void SPISlaveClass::begin() //backwards compatibility { - hspi_slave_onData(&_s_data_rx); - hspi_slave_onDataSent(&_s_data_tx); - hspi_slave_onStatus(&_s_status_rx); - hspi_slave_onStatusSent(&_s_status_tx); - hspi_slave_begin(4, this); + begin(4); } void SPISlaveClass::begin(uint8_t statusLength) { From 4e4e17b4bd343cfa0bf26ae5cc8688de9f3db6ee Mon Sep 17 00:00:00 2001 From: Dmytro Date: Wed, 30 Oct 2019 21:31:24 +0200 Subject: [PATCH 9/9] Comments about bits added, else if except if --- libraries/SPISlave/src/hspi_slave.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libraries/SPISlave/src/hspi_slave.c b/libraries/SPISlave/src/hspi_slave.c index 92d2b67258..c597e7aa88 100644 --- a/libraries/SPISlave/src/hspi_slave.c +++ b/libraries/SPISlave/src/hspi_slave.c @@ -75,7 +75,7 @@ void hspi_slave_begin(uint8_t status_len, void * arg) if(status_len > 4) { status_len = 4; //max 32 bits } - if(status_len == 0) { + else if(status_len == 0) { status_len = 1; //min 8 bits } @@ -84,7 +84,13 @@ void hspi_slave_begin(uint8_t status_len, void * arg) pinMode(MISO, SPECIAL); pinMode(MOSI, SPECIAL); - SPI1S = SPISE | SPISBE | SPISRBIE | SPISWBIE | SPISRSIE | SPISWSIE | SPISTRIE; // 0x3E0 // SPI_SLAVE_REG + SPI1S = SPISE | SPISBE | SPISTRIE | SPISWBIE | SPISRSIE | SPISWSIE | SPISRBIE; //(0x63E0) + //setting config bits in SPI_SLAVE_REG, defined in "esp8266_peri.h" : + //SPISE - spi slave enable + //SPISBE - allows work (read/write) with buffer, without this only? status available + //SPISTRIE - enables TRANS?? interrupt + //other SPISxxIE - enables corresponding interrupts (read(R)/write(W) status(S) and buffer(B)) + SPI1U = SPIUMISOH | SPIUCOMMAND | SPIUSSE; // SPI_USER_REG SPI1CLK = 0; SPI1U2 = (7 << SPILCOMMAND); // SPI_USER2_REG