From 3421590c29b87f22a7c480ae6d5757a782277cc4 Mon Sep 17 00:00:00 2001
From: Luc <luc.lebosse@gmail.com>
Date: Tue, 27 Nov 2018 15:15:04 +0100
Subject: [PATCH 1/6] Clean warnings when all warning enabled

Not used variables / functions due to debug log

Dual define with different values :
cores\esp32/binary.h
#define B110 6
#define B1000000 64

tools/sdk/include/newlib/sys/termios.h
#define B110        3
#define B1000000   23

Local variable returned in WiFiclient Secure
---
 cores/esp32/esp32-hal-i2c.c                   | 22 ++++++++++++-------
 libraries/WiFi/src/WiFiClient.cpp             |  3 +++
 libraries/WiFi/src/WiFiMulti.cpp              | 10 +++++----
 libraries/WiFi/src/WiFiSTA.cpp                |  4 ++++
 .../WiFiClientSecure/src/WiFiClientSecure.cpp | 11 +++++-----
 tools/sdk/include/vfs/esp_vfs.h               |  2 +-
 6 files changed, 33 insertions(+), 19 deletions(-)

diff --git a/cores/esp32/esp32-hal-i2c.c b/cores/esp32/esp32-hal-i2c.c
index 1ddc638d255..3493a56b4e8 100644
--- a/cores/esp32/esp32-hal-i2c.c
+++ b/cores/esp32/esp32-hal-i2c.c
@@ -248,9 +248,10 @@ static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c)
 
 /* Stickbreaker ISR mode debug support
  */
+ #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)
 static void i2cDumpDqData(i2c_t * i2c)
 {
-#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER)
+#if defined (ENABLE_I2C_DEBUG_BUFFER)
     uint16_t a=0;
     char buff[140];
     I2C_DATA_QUEUE_t *tdq;
@@ -306,9 +307,12 @@ static void i2cDumpDqData(i2c_t * i2c)
         }
         a++;
     }
+#else
+    log_i("Debug Buffer not Enabled");
 #endif
 }
-
+#endif
+#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO
 static void i2cDumpI2c(i2c_t * i2c)
 {
     log_e("i2c=%p",i2c);
@@ -332,11 +336,12 @@ static void i2cDumpI2c(i2c_t * i2c)
         i2cDumpDqData(i2c);
     }
 }
+#endif
 
+#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)  
 static void i2cDumpInts(uint8_t num)
 {
-#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO) && (defined ENABLE_I2C_DEBUG_BUFFER)  
-
+#if defined (ENABLE_I2C_DEBUG_BUFFER)
     uint32_t b;
     log_i("%u row\tcount\tINTR\tTX\tRX\tTick ",num);
     for(uint32_t a=1; a<=INTBUFFMAX; a++) {
@@ -349,9 +354,10 @@ static void i2cDumpInts(uint8_t num)
     log_i("Debug Buffer not Enabled");
 #endif
 }
+#endif
 
-static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){
 #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER)
+static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){
     typedef union {
         struct {
             uint32_t ack_rec:             1;        /*This register stores the value of ACK bit.*/
@@ -377,11 +383,11 @@ static void IRAM_ATTR i2cDumpStatus(i2c_t * i2c){
     sr.val= i2c->dev->status_reg.val;
     
     log_i("ack(%d) sl_rw(%d) to(%d) arb(%d) busy(%d) sl(%d) trans(%d) rx(%d) tx(%d) sclMain(%d) scl(%d)",sr.ack_rec,sr.slave_rw,sr.time_out,sr.arb_lost,sr.bus_busy,sr.slave_addressed,sr.byte_trans, sr.rx_fifo_cnt, sr.tx_fifo_cnt,sr.scl_main_state_last, sr.scl_state_last);
-#endif
 }
+#endif
 
-static void i2cDumpFifo(i2c_t * i2c){
 #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER)
+static void i2cDumpFifo(i2c_t * i2c){
 char buf[64];
 uint16_t k = 0;
 uint16_t i = fifoPos+1;
@@ -422,8 +428,8 @@ if(i != fifoPos){// actual data
       }
     }while( i!= fifoPos);
 }
-#endif
 }
+#endif
 
 static void IRAM_ATTR i2cTriggerDumps(i2c_t * i2c, uint8_t trigger, const char locus[]){
 #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)&&(defined ENABLE_I2C_DEBUG_BUFFER)
diff --git a/libraries/WiFi/src/WiFiClient.cpp b/libraries/WiFi/src/WiFiClient.cpp
index 246bfc0e99f..cf16ffc8828 100644
--- a/libraries/WiFi/src/WiFiClient.cpp
+++ b/libraries/WiFi/src/WiFiClient.cpp
@@ -439,6 +439,9 @@ uint8_t WiFiClient::connected()
     if (_connected) {
         uint8_t dummy;
         int res = recv(fd(), &dummy, 0, MSG_DONTWAIT);
+        if(res < 0) {
+            log_e("%d", errno);
+        }
         switch (errno) {
             case EWOULDBLOCK:
             case ENOENT: //caused by vfs
diff --git a/libraries/WiFi/src/WiFiMulti.cpp b/libraries/WiFi/src/WiFiMulti.cpp
index 300daee4280..b41ca37bc7f 100644
--- a/libraries/WiFi/src/WiFiMulti.cpp
+++ b/libraries/WiFi/src/WiFiMulti.cpp
@@ -118,17 +118,19 @@ uint8_t WiFiMulti::run(uint32_t connectTimeout)
                     status = WiFi.status();
                 }
 
-                IPAddress ip;
-                uint8_t * mac;
                 switch(status) {
                 case 3:
-                    ip = WiFi.localIP();
-                    mac = WiFi.BSSID();
+                    {
+#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
+                    IPAddress ip = WiFi.localIP();
+                    uint8_t * mac = WiFi.BSSID();
+#endif
                     log_i("[WIFI] Connecting done.");
                     log_d("[WIFI] SSID: %s", WiFi.SSID().c_str());
                     log_d("[WIFI] IP: %d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
                     log_d("[WIFI] MAC: %02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
                     log_d("[WIFI] Channel: %d", WiFi.channel());
+                    }   
                     break;
                 case 1:
                     log_e("[WIFI] Connecting Failed AP not found.");
diff --git a/libraries/WiFi/src/WiFiSTA.cpp b/libraries/WiFi/src/WiFiSTA.cpp
index f1ffa1f1f4f..b673db67bf5 100644
--- a/libraries/WiFi/src/WiFiSTA.cpp
+++ b/libraries/WiFi/src/WiFiSTA.cpp
@@ -683,7 +683,9 @@ void WiFiSTAClass::_smartConfigCallback(uint32_t st, void* result) {
     smartconfig_status_t status = (smartconfig_status_t) st;
     log_d("Status: %s", sc_status_strings[st % 5]);
     if (status == SC_STATUS_GETTING_SSID_PSWD) {
+#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
         smartconfig_type_t * type = (smartconfig_type_t *)result;
+#endif
         log_d("Type: %s", sc_type_strings[*type % 3]);
     } else if (status == SC_STATUS_LINK) {
         wifi_sta_config_t *sta_conf = reinterpret_cast<wifi_sta_config_t *>(result);
@@ -694,7 +696,9 @@ void WiFiSTAClass::_smartConfigCallback(uint32_t st, void* result) {
         _smartConfigDone = true;
     } else if (status == SC_STATUS_LINK_OVER) {
         if(result){
+#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
             ip4_addr_t * ip = (ip4_addr_t *)result;
+#endif
             log_d("Sender IP: " IPSTR, IP2STR(ip));
         }
         WiFi.stopSmartConfig();
diff --git a/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp b/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp
index 1a8574757b2..9f541247e43 100644
--- a/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp
+++ b/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp
@@ -232,7 +232,9 @@ bool WiFiClientSecure::verify(const char* fp, const char* domain_name)
 }
 
 char *WiFiClientSecure::_streamLoad(Stream& stream, size_t size) {
-  char *dest = (char*)malloc(size);
+  static char *dest = nullptr;
+  if(dest)free(dest);
+  dest = (char*)malloc(size);
   if (!dest) {
     return nullptr;
   }
@@ -240,10 +242,7 @@ char *WiFiClientSecure::_streamLoad(Stream& stream, size_t size) {
     free(dest);
     return nullptr;
   }
-  char ret[size+1];
-  snprintf(ret, size, "%s", dest);
-  free(dest);
-  return ret;
+  return dest;
 }
 
 bool WiFiClientSecure::loadCACert(Stream& stream, size_t size) {
@@ -290,4 +289,4 @@ int WiFiClientSecure::lastError(char *buf, const size_t size)
 void WiFiClientSecure::setHandshakeTimeout(unsigned long handshake_timeout)
 {
     sslclient->handshake_timeout = handshake_timeout * 1000;
-}
\ No newline at end of file
+}
diff --git a/tools/sdk/include/vfs/esp_vfs.h b/tools/sdk/include/vfs/esp_vfs.h
index e54a3e9835c..76a4eee5584 100644
--- a/tools/sdk/include/vfs/esp_vfs.h
+++ b/tools/sdk/include/vfs/esp_vfs.h
@@ -27,7 +27,7 @@
 #include <sys/reent.h>
 #include <sys/stat.h>
 #include <sys/time.h>
-#include <sys/termios.h>
+//#include <sys/termios.h>
 #include <dirent.h>
 #include <string.h>
 #include "sdkconfig.h"

From 10486fe1ef9ec97e3e5ba9a3b236c88da55eb480 Mon Sep 17 00:00:00 2001
From: Luc <luc.lebosse@gmail.com>
Date: Tue, 27 Nov 2018 15:38:14 +0100
Subject: [PATCH 2/6] change due to deprecated function

---
 cores/esp32/Esp.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cores/esp32/Esp.cpp b/cores/esp32/Esp.cpp
index 713ba7ab66c..7f57973ea66 100644
--- a/cores/esp32/Esp.cpp
+++ b/cores/esp32/Esp.cpp
@@ -156,7 +156,7 @@ static uint32_t sketchSize(sketchSize_t response) {
         .size = running->size,
     };
     data.start_addr = running_pos.offset;
-    esp_image_load(ESP_IMAGE_VERIFY, &running_pos, &data);
+    esp_image_verify(ESP_IMAGE_VERIFY, &running_pos, &data);
     if (response) {
     return running_pos.size - data.image_len;
     } else {

From 65ee625c515ea06eadafaa4ce06a9708dafe0b5f Mon Sep 17 00:00:00 2001
From: Luc <luc.lebosse@gmail.com>
Date: Tue, 27 Nov 2018 18:06:48 +0100
Subject: [PATCH 3/6] Update with proper variable and label

---
 libraries/WiFi/src/WiFiClient.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libraries/WiFi/src/WiFiClient.cpp b/libraries/WiFi/src/WiFiClient.cpp
index cf16ffc8828..14a4d4f4d98 100644
--- a/libraries/WiFi/src/WiFiClient.cpp
+++ b/libraries/WiFi/src/WiFiClient.cpp
@@ -440,7 +440,7 @@ uint8_t WiFiClient::connected()
         uint8_t dummy;
         int res = recv(fd(), &dummy, 0, MSG_DONTWAIT);
         if(res < 0) {
-            log_e("%d", errno);
+            log_e("RES: %d", res);
         }
         switch (errno) {
             case EWOULDBLOCK:

From d5ad89a83db162d8594b84236f95b9a5a724360b Mon Sep 17 00:00:00 2001
From: Luc <luc.lebosse@gmail.com>
Date: Tue, 27 Nov 2018 20:53:50 +0100
Subject: [PATCH 4/6] Update esp32-hal-i2c.c

---
 cores/esp32/esp32-hal-i2c.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cores/esp32/esp32-hal-i2c.c b/cores/esp32/esp32-hal-i2c.c
index 3493a56b4e8..bba0b6a38cb 100644
--- a/cores/esp32/esp32-hal-i2c.c
+++ b/cores/esp32/esp32-hal-i2c.c
@@ -248,7 +248,7 @@ static void IRAM_ATTR i2cDumpCmdQueue(i2c_t *i2c)
 
 /* Stickbreaker ISR mode debug support
  */
- #if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)
+#if (ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_INFO)
 static void i2cDumpDqData(i2c_t * i2c)
 {
 #if defined (ENABLE_I2C_DEBUG_BUFFER)

From 684e7bacdef80f71b0413caf81f56ab61775d0fe Mon Sep 17 00:00:00 2001
From: Luc <luc.lebosse@gmail.com>
Date: Wed, 28 Nov 2018 10:33:37 +0100
Subject: [PATCH 5/6] Apply changes requested

---
 libraries/WiFi/src/WiFiMulti.cpp                    | 10 ++--------
 libraries/WiFi/src/WiFiSTA.cpp                      |  4 ++--
 libraries/WiFiClientSecure/src/WiFiClientSecure.cpp |  6 ++++--
 tools/sdk/include/vfs/esp_vfs.h                     |  2 +-
 4 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/libraries/WiFi/src/WiFiMulti.cpp b/libraries/WiFi/src/WiFiMulti.cpp
index b41ca37bc7f..c5b8ed61526 100644
--- a/libraries/WiFi/src/WiFiMulti.cpp
+++ b/libraries/WiFi/src/WiFiMulti.cpp
@@ -120,17 +120,11 @@ uint8_t WiFiMulti::run(uint32_t connectTimeout)
 
                 switch(status) {
                 case 3:
-                    {
-#if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
-                    IPAddress ip = WiFi.localIP();
-                    uint8_t * mac = WiFi.BSSID();
-#endif
                     log_i("[WIFI] Connecting done.");
                     log_d("[WIFI] SSID: %s", WiFi.SSID().c_str());
-                    log_d("[WIFI] IP: %d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
-                    log_d("[WIFI] MAC: %02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
+                    log_d("[WIFI] IP: %s", WiFi.localIP().toString().c_str());
+                    log_d("[WIFI] MAC: %s", WiFi.BSSID().toString().c_str());
                     log_d("[WIFI] Channel: %d", WiFi.channel());
-                    }   
                     break;
                 case 1:
                     log_e("[WIFI] Connecting Failed AP not found.");
diff --git a/libraries/WiFi/src/WiFiSTA.cpp b/libraries/WiFi/src/WiFiSTA.cpp
index b673db67bf5..b76dea05913 100644
--- a/libraries/WiFi/src/WiFiSTA.cpp
+++ b/libraries/WiFi/src/WiFiSTA.cpp
@@ -685,8 +685,8 @@ void WiFiSTAClass::_smartConfigCallback(uint32_t st, void* result) {
     if (status == SC_STATUS_GETTING_SSID_PSWD) {
 #if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
         smartconfig_type_t * type = (smartconfig_type_t *)result;
-#endif
         log_d("Type: %s", sc_type_strings[*type % 3]);
+#endif
     } else if (status == SC_STATUS_LINK) {
         wifi_sta_config_t *sta_conf = reinterpret_cast<wifi_sta_config_t *>(result);
         log_d("SSID: %s", (char *)(sta_conf->ssid));
@@ -698,8 +698,8 @@ void WiFiSTAClass::_smartConfigCallback(uint32_t st, void* result) {
         if(result){
 #if ARDUHAL_LOG_LEVEL >= ARDUHAL_LOG_LEVEL_DEBUG
             ip4_addr_t * ip = (ip4_addr_t *)result;
-#endif
             log_d("Sender IP: " IPSTR, IP2STR(ip));
+#endif
         }
         WiFi.stopSmartConfig();
     }
diff --git a/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp b/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp
index 9f541247e43..5d6986b565d 100644
--- a/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp
+++ b/libraries/WiFiClientSecure/src/WiFiClientSecure.cpp
@@ -233,14 +233,16 @@ bool WiFiClientSecure::verify(const char* fp, const char* domain_name)
 
 char *WiFiClientSecure::_streamLoad(Stream& stream, size_t size) {
   static char *dest = nullptr;
-  if(dest)free(dest);
+  if(dest) {
+      free(dest);
+  }
   dest = (char*)malloc(size);
   if (!dest) {
     return nullptr;
   }
   if (size != stream.readBytes(dest, size)) {
     free(dest);
-    return nullptr;
+    dest = nullptr;
   }
   return dest;
 }
diff --git a/tools/sdk/include/vfs/esp_vfs.h b/tools/sdk/include/vfs/esp_vfs.h
index 76a4eee5584..e54a3e9835c 100644
--- a/tools/sdk/include/vfs/esp_vfs.h
+++ b/tools/sdk/include/vfs/esp_vfs.h
@@ -27,7 +27,7 @@
 #include <sys/reent.h>
 #include <sys/stat.h>
 #include <sys/time.h>
-//#include <sys/termios.h>
+#include <sys/termios.h>
 #include <dirent.h>
 #include <string.h>
 #include "sdkconfig.h"

From 6a180ee88d90e5be1eeaa1b8c4b8b6d12dab7a79 Mon Sep 17 00:00:00 2001
From: Luc <luc.lebosse@gmail.com>
Date: Thu, 29 Nov 2018 10:21:05 +0100
Subject: [PATCH 6/6] Fix warnings due to #define conflict thanks @atanisoft

---
 libraries/SD/src/sd_diskio.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libraries/SD/src/sd_diskio.cpp b/libraries/SD/src/sd_diskio.cpp
index 3dfbc040c73..ca0f0d6b05e 100644
--- a/libraries/SD/src/sd_diskio.cpp
+++ b/libraries/SD/src/sd_diskio.cpp
@@ -16,7 +16,7 @@ extern "C" {
     #include "diskio.h"
     #include "ffconf.h"
     #include "ff.h"
-    #include "esp_vfs.h"
+    //#include "esp_vfs.h"
     #include "esp_vfs_fat.h"
     char CRC7(const char* data, int length);
     unsigned short CRC16(const char* data, int length);