From 92e64ad27e865e748fbb5244fe1479ad63ad8ba5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juraj=20Andr=C3=A1ssy?= Date: Sun, 28 Jan 2018 07:21:06 +0100 Subject: [PATCH 1/4] SPISlave.end() added --- 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 caef541637..2d5841cad6 100644 --- a/libraries/SPISlave/src/hspi_slave.c +++ b/libraries/SPISlave/src/hspi_slave.c @@ -98,6 +98,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); From db4c9754cacf6a0a2ad930ee218a92f2dda98cf1 Mon Sep 17 00:00:00 2001 From: devyte Date: Wed, 24 Jan 2018 17:14:57 -0300 Subject: [PATCH 2/4] Change argument to Esp.deepSleep from uint32 to uint64 to match SDK, add deepSleepMax based on the cali_proc function per SDK --- cores/esp8266/Esp.cpp | 11 ++++++++++- cores/esp8266/Esp.h | 3 ++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/cores/esp8266/Esp.cpp b/cores/esp8266/Esp.cpp index f4c0b2208c..c8969691b8 100644 --- a/cores/esp8266/Esp.cpp +++ b/cores/esp8266/Esp.cpp @@ -107,13 +107,22 @@ void EspClass::wdtFeed(void) extern "C" void esp_yield(); -void EspClass::deepSleep(uint32_t time_us, WakeMode mode) +void EspClass::deepSleep(uint64_t time_us, WakeMode mode) { system_deep_sleep_set_option(static_cast(mode)); system_deep_sleep(time_us); esp_yield(); } +//this calculation was taken verbatim from the SDK api reference for SDK 2.1.0. +//Note: system_rtc_clock_cali_proc() returns a uint32_t, even though system_deep_sleep() takes a uint64_t. +uint64_t EspClass::deepSleepMax() +{ + //cali*(2^31-1)/(2^12) + return (uint64_t)system_rtc_clock_cali_proc()*(0x80000000-1)/(0x1000); + +} + bool EspClass::rtcUserMemoryRead(uint32_t offset, uint32_t *data, size_t size) { if (size + offset > 512) { diff --git a/cores/esp8266/Esp.h b/cores/esp8266/Esp.h index e6754019db..e5d3a5f909 100644 --- a/cores/esp8266/Esp.h +++ b/cores/esp8266/Esp.h @@ -92,7 +92,8 @@ class EspClass { void wdtDisable(); void wdtFeed(); - void deepSleep(uint32_t time_us, RFMode mode = RF_DEFAULT); + void deepSleep(uint64_t time_us, RFMode mode = RF_DEFAULT); + uint64_t deepSleepMax(); bool rtcUserMemoryRead(uint32_t offset, uint32_t *data, size_t size); bool rtcUserMemoryWrite(uint32_t offset, uint32_t *data, size_t size); From a3ce78fe7118f8dea7888b1b537408fc26148121 Mon Sep 17 00:00:00 2001 From: NameOfTheRose Date: Mon, 29 Jan 2018 18:28:28 +0200 Subject: [PATCH 3/4] Nameoftherose patch for Issue #2435 (#4256) * WiFiTelnetToSerial Example - Minor Issues #2435 * WiFiTelnetToSerial Example - Minor Issues #2435 Patch to rectify issue #2435 --- .../examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libraries/ESP8266WiFi/examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino b/libraries/ESP8266WiFi/examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino index fa81508401..0197d1661d 100644 --- a/libraries/ESP8266WiFi/examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino +++ b/libraries/ESP8266WiFi/examples/WiFiTelnetToSerial/WiFiTelnetToSerial.ino @@ -59,12 +59,15 @@ void loop() { if(serverClients[i]) serverClients[i].stop(); serverClients[i] = server.available(); Serial1.print("New client: "); Serial1.print(i); - continue; + break; } } //no free/disconnected spot so reject - WiFiClient serverClient = server.available(); - serverClient.stop(); + if ( i == MAX_SRV_CLIENTS) { + WiFiClient serverClient = server.available(); + serverClient.stop(); + Serial1.println("Connection rejected "); + } } //check clients for data for(i = 0; i < MAX_SRV_CLIENTS; i++){ From ffd4b3af0f393dc6c5875f50c98cbf61ac238525 Mon Sep 17 00:00:00 2001 From: Develo Date: Tue, 30 Jan 2018 14:59:47 -0300 Subject: [PATCH 4/4] Check that pins needed by Wire are defined at compile-time (#4261) --- libraries/Wire/Wire.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libraries/Wire/Wire.cpp b/libraries/Wire/Wire.cpp index b4b7460118..b83072914a 100644 --- a/libraries/Wire/Wire.cpp +++ b/libraries/Wire/Wire.cpp @@ -30,6 +30,13 @@ extern "C" { #include "twi.h" #include "Wire.h" + +//Some boards don't have these pins available, and hence don't support Wire. +//Check here for compile-time error. +#if !defined(PIN_WIRE_SDA) || !defined(PIN_WIRE_SCL) +#error Wire library is not supported on this board +#endif + // Initialize Class Variables ////////////////////////////////////////////////// uint8_t TwoWire::rxBuffer[BUFFER_LENGTH];