From e9d052c621953b7932cffb91c58c14207a5e526d Mon Sep 17 00:00:00 2001 From: Develo Date: Fri, 14 Dec 2018 03:29:32 -0300 Subject: [PATCH] WIP - Update ArduinoOTA and examples with MDNS.update() calls (#5494) * ArduinoOTA: allow use without MDNS, add MDNS.update() in handle() * Update examples with MDNS.update() in loop * Update CaptivePortalAdvanced.ino Fix typo * Update CaptivePortalAdvanced.ino astyle * Update Arduino_Wifi_AVRISP.ino astyle --- libraries/ArduinoOTA/ArduinoOTA.cpp | 22 ++++++++++++++----- libraries/ArduinoOTA/ArduinoOTA.h | 5 +++-- .../CaptivePortalAdvanced.ino | 3 +++ .../Arduino_Wifi_AVRISP.ino | 4 ++++ .../SecureBearSSLUpdater.ino | 1 + .../SecureHTTPSUpdater/SecureHTTPSUpdater.ino | 1 + .../SecureWebUpdater/SecureWebUpdater.ino | 1 + .../examples/WebUpdater/WebUpdater.ino | 1 + .../AdvancedWebServer/AdvancedWebServer.ino | 1 + .../examples/FSBrowser/FSBrowser.ino | 1 + .../examples/HelloServer/HelloServer.ino | 1 + .../HelloServerBearSSL/HelloServerBearSSL.ino | 1 + .../HelloServerSecure/HelloServerSecure.ino | 1 + .../examples/SDWebServer/SDWebServer.ino | 1 + .../examples/WebUpdate/WebUpdate.ino | 2 +- .../OTA-mDNS-SPIFFS/OTA-mDNS-SPIFFS.ino | 1 - .../mDNS-SD_Extended/mDNS-SD_Extended.ino | 2 +- .../mDNS_Web_Server/mDNS_Web_Server.ino | 3 +++ 18 files changed, 41 insertions(+), 11 deletions(-) diff --git a/libraries/ArduinoOTA/ArduinoOTA.cpp b/libraries/ArduinoOTA/ArduinoOTA.cpp index 295401fad..e2125732b 100644 --- a/libraries/ArduinoOTA/ArduinoOTA.cpp +++ b/libraries/ArduinoOTA/ArduinoOTA.cpp @@ -33,6 +33,7 @@ ArduinoOTAClass::ArduinoOTAClass() , _udp_ota(0) , _initialized(false) , _rebootOnSuccess(true) +, _useMDNS(true) , _state(OTA_IDLE) , _size(0) , _cmd(0) @@ -103,10 +104,12 @@ void ArduinoOTAClass::setRebootOnSuccess(bool reboot){ _rebootOnSuccess = reboot; } -void ArduinoOTAClass::begin() { +void ArduinoOTAClass::begin(bool useMDNS) { if (_initialized) return; + _useMDNS = useMDNS; + if (!_hostname.length()) { char tmp[15]; sprintf(tmp, "esp8266-%06x", ESP.getChipId()); @@ -127,12 +130,15 @@ void ArduinoOTAClass::begin() { if(!_udp_ota->listen(IP_ADDR_ANY, _port)) return; _udp_ota->onRx(std::bind(&ArduinoOTAClass::_onRx, this)); - MDNS.begin(_hostname.c_str()); - if (_password.length()) { - MDNS.enableArduino(_port, true); - } else { - MDNS.enableArduino(_port); + if(_useMDNS) { + MDNS.begin(_hostname.c_str()); + + if (_password.length()) { + MDNS.enableArduino(_port, true); + } else { + MDNS.enableArduino(_port); + } } _initialized = true; _state = OTA_IDLE; @@ -348,11 +354,15 @@ void ArduinoOTAClass::_runUpdate() { } } +//this needs to be called in the loop() void ArduinoOTAClass::handle() { if (_state == OTA_RUNUPDATE) { _runUpdate(); _state = OTA_IDLE; } + + if(_useMDNS) + MDNS.update(); //handle MDNS update as well, given that ArduinoOTA relies on it anyways } int ArduinoOTAClass::getCommand() { diff --git a/libraries/ArduinoOTA/ArduinoOTA.h b/libraries/ArduinoOTA/ArduinoOTA.h index 9785d18f8..a02dbc485 100644 --- a/libraries/ArduinoOTA/ArduinoOTA.h +++ b/libraries/ArduinoOTA/ArduinoOTA.h @@ -60,9 +60,9 @@ class ArduinoOTAClass void onProgress(THandlerFunction_Progress fn); //Starts the ArduinoOTA service - void begin(); + void begin(bool useMDNS = true); - //Call this in loop() to run the service + //Call this in loop() to run the service. Also calls MDNS.update() when begin() or begin(true) is used. void handle(); //Gets update command type after OTA has started. Either U_FLASH or U_SPIFFS @@ -76,6 +76,7 @@ class ArduinoOTAClass UdpContext *_udp_ota; bool _initialized; bool _rebootOnSuccess; + bool _useMDNS; ota_state_t _state; int _size; int _cmd; diff --git a/libraries/DNSServer/examples/CaptivePortalAdvanced/CaptivePortalAdvanced.ino b/libraries/DNSServer/examples/CaptivePortalAdvanced/CaptivePortalAdvanced.ino index 0d2251d29..4da1fcc44 100644 --- a/libraries/DNSServer/examples/CaptivePortalAdvanced/CaptivePortalAdvanced.ino +++ b/libraries/DNSServer/examples/CaptivePortalAdvanced/CaptivePortalAdvanced.ino @@ -130,6 +130,9 @@ void loop() { WiFi.disconnect(); } } + if (s == WL_CONNECTED) { + MDNS.update(); + } } // Do work: //DNS diff --git a/libraries/ESP8266AVRISP/examples/Arduino_Wifi_AVRISP/Arduino_Wifi_AVRISP.ino b/libraries/ESP8266AVRISP/examples/Arduino_Wifi_AVRISP/Arduino_Wifi_AVRISP.ino index 71795a71a..7d0abe4d6 100644 --- a/libraries/ESP8266AVRISP/examples/Arduino_Wifi_AVRISP/Arduino_Wifi_AVRISP.ino +++ b/libraries/ESP8266AVRISP/examples/Arduino_Wifi_AVRISP/Arduino_Wifi_AVRISP.ino @@ -70,4 +70,8 @@ void loop() { if (last_state != AVRISP_STATE_IDLE) { avrprog.serve(); } + + if (WiFi.status() == WL_CONNECTED) { + MDNS.update(); + } } diff --git a/libraries/ESP8266HTTPUpdateServer/examples/SecureBearSSLUpdater/SecureBearSSLUpdater.ino b/libraries/ESP8266HTTPUpdateServer/examples/SecureBearSSLUpdater/SecureBearSSLUpdater.ino index be54a1baf..9792ae397 100644 --- a/libraries/ESP8266HTTPUpdateServer/examples/SecureBearSSLUpdater/SecureBearSSLUpdater.ino +++ b/libraries/ESP8266HTTPUpdateServer/examples/SecureBearSSLUpdater/SecureBearSSLUpdater.ino @@ -119,4 +119,5 @@ void setup() void loop() { httpServer.handleClient(); + MDNS.update(); } diff --git a/libraries/ESP8266HTTPUpdateServer/examples/SecureHTTPSUpdater/SecureHTTPSUpdater.ino b/libraries/ESP8266HTTPUpdateServer/examples/SecureHTTPSUpdater/SecureHTTPSUpdater.ino index 3e028cf72..07d39ab1c 100644 --- a/libraries/ESP8266HTTPUpdateServer/examples/SecureHTTPSUpdater/SecureHTTPSUpdater.ino +++ b/libraries/ESP8266HTTPUpdateServer/examples/SecureHTTPSUpdater/SecureHTTPSUpdater.ino @@ -188,4 +188,5 @@ void setup() { void loop() { httpServer.handleClient(); + MDNS.update(); } diff --git a/libraries/ESP8266HTTPUpdateServer/examples/SecureWebUpdater/SecureWebUpdater.ino b/libraries/ESP8266HTTPUpdateServer/examples/SecureWebUpdater/SecureWebUpdater.ino index dc2fd5fdf..11e23a929 100644 --- a/libraries/ESP8266HTTPUpdateServer/examples/SecureWebUpdater/SecureWebUpdater.ino +++ b/libraries/ESP8266HTTPUpdateServer/examples/SecureWebUpdater/SecureWebUpdater.ino @@ -47,4 +47,5 @@ void setup(void) { void loop(void) { httpServer.handleClient(); + MDNS.update(); } diff --git a/libraries/ESP8266HTTPUpdateServer/examples/WebUpdater/WebUpdater.ino b/libraries/ESP8266HTTPUpdateServer/examples/WebUpdater/WebUpdater.ino index 8e5ab2a8f..fea3c4023 100644 --- a/libraries/ESP8266HTTPUpdateServer/examples/WebUpdater/WebUpdater.ino +++ b/libraries/ESP8266HTTPUpdateServer/examples/WebUpdater/WebUpdater.ino @@ -44,4 +44,5 @@ void setup(void) { void loop(void) { httpServer.handleClient(); + MDNS.update(); } diff --git a/libraries/ESP8266WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino b/libraries/ESP8266WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino index a083666ac..fb02d0f98 100644 --- a/libraries/ESP8266WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino +++ b/libraries/ESP8266WebServer/examples/AdvancedWebServer/AdvancedWebServer.ino @@ -130,6 +130,7 @@ void setup(void) { void loop(void) { server.handleClient(); + MDNS.update(); } void drawGraph() { diff --git a/libraries/ESP8266WebServer/examples/FSBrowser/FSBrowser.ino b/libraries/ESP8266WebServer/examples/FSBrowser/FSBrowser.ino index e31acdfd4..ff4204476 100644 --- a/libraries/ESP8266WebServer/examples/FSBrowser/FSBrowser.ino +++ b/libraries/ESP8266WebServer/examples/FSBrowser/FSBrowser.ino @@ -282,4 +282,5 @@ void setup(void) { void loop(void) { server.handleClient(); + MDNS.update(); } diff --git a/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino b/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino index ca5f8890e..40bb9ea29 100644 --- a/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino +++ b/libraries/ESP8266WebServer/examples/HelloServer/HelloServer.ino @@ -75,4 +75,5 @@ void setup(void) { void loop(void) { server.handleClient(); + MDNS.update(); } diff --git a/libraries/ESP8266WebServer/examples/HelloServerBearSSL/HelloServerBearSSL.ino b/libraries/ESP8266WebServer/examples/HelloServerBearSSL/HelloServerBearSSL.ino index e920fb3b6..5f34848d9 100644 --- a/libraries/ESP8266WebServer/examples/HelloServerBearSSL/HelloServerBearSSL.ino +++ b/libraries/ESP8266WebServer/examples/HelloServerBearSSL/HelloServerBearSSL.ino @@ -144,4 +144,5 @@ void setup(void){ void loop(void){ server.handleClient(); + MDNS.update(); } diff --git a/libraries/ESP8266WebServer/examples/HelloServerSecure/HelloServerSecure.ino b/libraries/ESP8266WebServer/examples/HelloServerSecure/HelloServerSecure.ino index 7dfd0cd5c..b0f94740b 100644 --- a/libraries/ESP8266WebServer/examples/HelloServerSecure/HelloServerSecure.ino +++ b/libraries/ESP8266WebServer/examples/HelloServerSecure/HelloServerSecure.ino @@ -181,4 +181,5 @@ void setup(void) { void loop(void) { server.handleClient(); + MDNS.update(); } diff --git a/libraries/ESP8266WebServer/examples/SDWebServer/SDWebServer.ino b/libraries/ESP8266WebServer/examples/SDWebServer/SDWebServer.ino index 1733a912f..59432cf90 100644 --- a/libraries/ESP8266WebServer/examples/SDWebServer/SDWebServer.ino +++ b/libraries/ESP8266WebServer/examples/SDWebServer/SDWebServer.ino @@ -315,4 +315,5 @@ void setup(void) { void loop(void) { server.handleClient(); + MDNS.update(); } diff --git a/libraries/ESP8266WebServer/examples/WebUpdate/WebUpdate.ino b/libraries/ESP8266WebServer/examples/WebUpdate/WebUpdate.ino index b86ae33f1..17646fd17 100644 --- a/libraries/ESP8266WebServer/examples/WebUpdate/WebUpdate.ino +++ b/libraries/ESP8266WebServer/examples/WebUpdate/WebUpdate.ino @@ -70,5 +70,5 @@ void setup(void) { void loop(void) { server.handleClient(); - delay(1); + MDNS.update(); } diff --git a/libraries/ESP8266mDNS/examples/OTA-mDNS-SPIFFS/OTA-mDNS-SPIFFS.ino b/libraries/ESP8266mDNS/examples/OTA-mDNS-SPIFFS/OTA-mDNS-SPIFFS.ino index 2115053dd..a03b7cfba 100644 --- a/libraries/ESP8266mDNS/examples/OTA-mDNS-SPIFFS/OTA-mDNS-SPIFFS.ino +++ b/libraries/ESP8266mDNS/examples/OTA-mDNS-SPIFFS/OTA-mDNS-SPIFFS.ino @@ -238,6 +238,5 @@ void setup() { void loop() { // Handle OTA server. ArduinoOTA.handle(); - yield(); } diff --git a/libraries/ESP8266mDNS/examples/mDNS-SD_Extended/mDNS-SD_Extended.ino b/libraries/ESP8266mDNS/examples/mDNS-SD_Extended/mDNS-SD_Extended.ino index 80f3efbb6..fda2fe656 100644 --- a/libraries/ESP8266mDNS/examples/mDNS-SD_Extended/mDNS-SD_Extended.ino +++ b/libraries/ESP8266mDNS/examples/mDNS-SD_Extended/mDNS-SD_Extended.ino @@ -76,5 +76,5 @@ void setup() { void loop() { // put your main code here, to run repeatedly: - + MDNS.update(); } diff --git a/libraries/ESP8266mDNS/examples/mDNS_Web_Server/mDNS_Web_Server.ino b/libraries/ESP8266mDNS/examples/mDNS_Web_Server/mDNS_Web_Server.ino index de46ea31b..7560864ce 100644 --- a/libraries/ESP8266mDNS/examples/mDNS_Web_Server/mDNS_Web_Server.ino +++ b/libraries/ESP8266mDNS/examples/mDNS_Web_Server/mDNS_Web_Server.ino @@ -72,6 +72,9 @@ void setup(void) { } void loop(void) { + + MDNS.update(); + // Check if a client has connected WiFiClient client = server.available(); if (!client) {