From 891113678c0498298bb82a2849e7d2bd87138c92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juraj=20Andr=C3=A1ssy?= Date: Sun, 18 Mar 2018 05:53:54 +0100 Subject: [PATCH] SPISlave.end() added (#4248) * Change argument to Esp.deepSleep from uint32 to uint64 to match SDK, add deepSleepMax based on the cali_proc function per SDK * SPISlave.end() added * Nameoftherose patch for Issue #2435 (#4256) * WiFiTelnetToSerial Example - Minor Issues #2435 * WiFiTelnetToSerial Example - Minor Issues #2435 Patch to rectify issue #2435 * Check that pins needed by Wire are defined at compile-time (#4261) --- libraries/SPISlave/src/SPISlave.cpp | 8 ++++++++ libraries/SPISlave/src/SPISlave.h | 1 + libraries/SPISlave/src/hspi_slave.c | 17 +++++++++++++++++ libraries/SPISlave/src/hspi_slave.h | 3 +++ 4 files changed, 29 insertions(+) diff --git a/libraries/SPISlave/src/SPISlave.cpp b/libraries/SPISlave/src/SPISlave.cpp index bc03e4b3f6..a88915b518 100644 --- a/libraries/SPISlave/src/SPISlave.cpp +++ b/libraries/SPISlave/src/SPISlave.cpp @@ -72,6 +72,14 @@ void SPISlaveClass::begin() hspi_slave_onStatusSent(&_s_status_tx); hspi_slave_begin(4, this); } +void SPISlaveClass::end() +{ + hspi_slave_onData(nullptr); + hspi_slave_onDataSent(nullptr); + hspi_slave_onStatus(nullptr); + hspi_slave_onStatusSent(nullptr); + hspi_slave_end(); +} void SPISlaveClass::setData(uint8_t * data, size_t len) { if(len > 32) { diff --git a/libraries/SPISlave/src/SPISlave.h b/libraries/SPISlave/src/SPISlave.h index 92936c9896..a52495cf9c 100644 --- a/libraries/SPISlave/src/SPISlave.h +++ b/libraries/SPISlave/src/SPISlave.h @@ -52,6 +52,7 @@ class SPISlaveClass {} ~SPISlaveClass() {} void begin(); + void end(); void setData(uint8_t * data, size_t len); void setData(const char * data) { diff --git a/libraries/SPISlave/src/hspi_slave.c b/libraries/SPISlave/src/hspi_slave.c index ce06e99f7b..66199b4070 100644 --- a/libraries/SPISlave/src/hspi_slave.c +++ b/libraries/SPISlave/src/hspi_slave.c @@ -97,6 +97,23 @@ void hspi_slave_begin(uint8_t status_len, void * arg) ETS_SPI_INTR_ENABLE(); } +void hspi_slave_end() +{ + ETS_SPI_INTR_DISABLE(); + ETS_SPI_INTR_ATTACH(NULL, NULL); + + pinMode(SS, INPUT); + pinMode(SCK, INPUT); + pinMode(MISO, INPUT); + pinMode(MOSI, INPUT); + + // defaults + SPI1S = 0; + SPI1U = SPIUSSE | SPIUCOMMAND; + SPI1S1 = 0; + SPI1P = B110; +} + void hspi_slave_setStatus(uint32_t status) { SPI1WS = status; diff --git a/libraries/SPISlave/src/hspi_slave.h b/libraries/SPISlave/src/hspi_slave.h index 55eeb76333..783c4b4a43 100644 --- a/libraries/SPISlave/src/hspi_slave.h +++ b/libraries/SPISlave/src/hspi_slave.h @@ -26,6 +26,9 @@ //Start SPI SLave void hspi_slave_begin(uint8_t status_len, void * arg); +//End SPI SLave +void hspi_slave_end(); + //set the status register so the master can read it void hspi_slave_setStatus(uint32_t status);