From a2c02a38e542e83c70a33978a6556dafe9be3855 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Wed, 20 Oct 2021 12:48:08 +0300 Subject: [PATCH] hardware: tweak core and core-webui targets given that relay, button and led settings may be hardcoded, explicitly remove from -core and -core-webui restore telnet debugging though, since the terminal output needs it for -core-webui, disables mdns and the generic webui server + webui blob per 56f74cfe, make the resulting .bin even smaller --- code/espurna/board.cpp | 3 +++ code/espurna/button.cpp | 4 ++-- code/espurna/config/hardware.h | 29 +++++++++++++++++------------ code/espurna/led.cpp | 22 ++++++++++++++-------- code/espurna/telnet.cpp | 1 + code/espurna/terminal.cpp | 2 ++ code/espurna/wifi.cpp | 1 + 7 files changed, 40 insertions(+), 22 deletions(-) diff --git a/code/espurna/board.cpp b/code/espurna/board.cpp index 790abfdb..7e0d3ebf 100644 --- a/code/espurna/board.cpp +++ b/code/espurna/board.cpp @@ -145,6 +145,9 @@ const char* getEspurnaModules() { #if OTA_ARDUINOOTA_SUPPORT "ARDUINO_OTA " #endif +#if OTA_WEB_SUPPORT + "OTA_WEB " +#endif #if (OTA_CLIENT != OTA_CLIENT_NONE) "OTA_CLIENT " #endif diff --git a/code/espurna/button.cpp b/code/espurna/button.cpp index 0ca0c6f8..47890e80 100644 --- a/code/espurna/button.cpp +++ b/code/espurna/button.cpp @@ -880,14 +880,14 @@ void buttonEvent(size_t id, ButtonEvent event) { switch (action) { -#if RELAY_SUPPORT case ButtonAction::Toggle: case ButtonAction::On: case ButtonAction::Off: case ButtonAction::Pulse: +#if RELAY_SUPPORT _buttonRelayAction(id, action); - break; #endif + break; case ButtonAction::AccessPoint: wifiToggleAp(); diff --git a/code/espurna/config/hardware.h b/code/espurna/config/hardware.h index 843df58b..78d16e81 100644 --- a/code/espurna/config/hardware.h +++ b/code/espurna/config/hardware.h @@ -61,7 +61,6 @@ #define ALEXA_SUPPORT 0 #define API_SUPPORT 0 #define DEBUG_SERIAL_SUPPORT 0 - #define DEBUG_TELNET_SUPPORT 0 #define DEBUG_WEB_SUPPORT 0 #define DOMOTICZ_SUPPORT 0 #define HOMEASSISTANT_SUPPORT 0 @@ -74,13 +73,14 @@ #define THINGSPEAK_SUPPORT 0 #define WEB_SUPPORT 0 + #define DEBUG_TELNET_SUPPORT 1 #define TELNET_AUTHENTICATION 0 #define TELNET_STA 1 // Extra light-weight image - //#define BUTTON_SUPPORT 0 // don't need / have buttons - //#define LED_SUPPORT 0 // don't need wifi indicator - //#define RELAY_SUPPORT 0 // don't need to preserve pin state between resets + #define BUTTON_SUPPORT 0 // don't need / have buttons + #define LED_SUPPORT 0 // don't need wifi indicator + #define RELAY_SUPPORT 0 // don't need to preserve pin state between resets //#define OTA_ARDUINOOTA_SUPPORT 0 // when only using the `ota` command //#define OTA_WEB_SUPPORT 0 // //#define MDNS_SERVER_SUPPORT 0 // @@ -99,10 +99,9 @@ // Disable non-core modules #define ALEXA_SUPPORT 0 #define API_SUPPORT 0 - #define DOMOTICZ_SUPPORT 0 #define DEBUG_SERIAL_SUPPORT 0 - //#define DEBUG_TELNET_SUPPORT 0 - //#define DEBUG_WEB_SUPPORT 0 + #define DEBUG_WEB_SUPPORT 0 + #define DOMOTICZ_SUPPORT 0 #define HOMEASSISTANT_SUPPORT 0 #define I2C_SUPPORT 0 #define MQTT_SUPPORT 0 @@ -110,16 +109,22 @@ #define SCHEDULER_SUPPORT 0 #define SENSOR_SUPPORT 0 #define THINGSPEAK_SUPPORT 0 - //#define WEB_SUPPORT 0 - #define WEB_FORCE_PASS_CHANGE 0 + // Small webpage to upload the .bin + #define MDNS_SERVER_SUPPORT 0 + #define WEB_SUPPORT 0 + #define OTA_ARDUINOOTA_SUPPORT 0 + #define OTA_WEB_SUPPORT 1 + + // Keep the generic uploader + #define DEBUG_TELNET_SUPPORT 1 #define TELNET_AUTHENTICATION 0 #define TELNET_STA 1 // Extra light-weight image - #define BUTTON_SUPPORT 0 - #define LED_SUPPORT 0 - //#define MDNS_SERVER_SUPPORT 0 + #define BUTTON_SUPPORT 0 // don't need / have buttons + #define LED_SUPPORT 0 // don't need wifi indicator + #define RELAY_SUPPORT 0 // don't need to preserve pin state between resets //#define TELNET_SUPPORT 0 //#define TERMINAL_SUPPORT 0 diff --git a/code/espurna/led.cpp b/code/espurna/led.cpp index e2d22839..214eddff 100644 --- a/code/espurna/led.cpp +++ b/code/espurna/led.cpp @@ -578,11 +578,9 @@ bool inverse(size_t id) { return getSetting({"ledInv", id}, build::inverse(id)); } -#if RELAY_SUPPORT size_t relay(size_t id) { return getSetting({"ledRelay", id}, build::relay(id)); } -#endif Pattern pattern(size_t id) { return Pattern(getSetting({"ledPattern", id})); @@ -668,8 +666,8 @@ using KeyDefaults = std::array; KeyDefaults keyDefaults() { return { KeyDefault{"ledGpio", KEY_DEFAULT_FUNC(pin)}, - KeyDefault{"ledMode", KEY_DEFAULT_FUNC(mode)}, KeyDefault{"ledInv", KEY_DEFAULT_FUNC(inverse)}, + KeyDefault{"ledMode", KEY_DEFAULT_FUNC(mode)}, KeyDefault{"ledRelay", KEY_DEFAULT_FUNC(relay)}}; } @@ -878,9 +876,8 @@ void loop(Led& led) { } break; -#if RELAY_SUPPORT - case LED_MODE_FINDME_WIFI: +#if RELAY_SUPPORT if (wifiConnected()) { if (relay::status(led)) { run(led, NetworkConnected); @@ -896,9 +893,11 @@ void loop(Led& led) { } else { run(led, NetworkIdle); } - break; +#endif + break; case LED_MODE_RELAY_WIFI: +#if RELAY_SUPPORT if (wifiConnected()) { if (relay::status(led)) { run(led, NetworkConnected); @@ -914,34 +913,41 @@ void loop(Led& led) { } else { run(led, NetworkIdle); } +#endif break; case LED_MODE_FOLLOW: +#if RELAY_SUPPORT if (scheduled()) { status(led, relay::status(led)); } +#endif break; case LED_MODE_FOLLOW_INVERSE: +#if RELAY_SUPPORT if (scheduled()) { status(led, !relay::status(led)); } +#endif break; case LED_MODE_FINDME: +#if RELAY_SUPPORT if (scheduled()) { led::status(led, !relay::areAnyOn()); } +#endif break; case LED_MODE_RELAY: +#if RELAY_SUPPORT if (scheduled()) { led::status(led, relay::areAnyOn()); } +#endif break; -#endif // RELAY_SUPPORT == 1 - case LED_MODE_ON: if (scheduled()) { status(led, true); diff --git a/code/espurna/telnet.cpp b/code/espurna/telnet.cpp index 8a5e9d63..f4cce84b 100644 --- a/code/espurna/telnet.cpp +++ b/code/espurna/telnet.cpp @@ -19,6 +19,7 @@ Updated to use WiFiServer and support reverse connections by Niek van der Maas < #if TELNET_SUPPORT +#include #include #include diff --git a/code/espurna/terminal.cpp b/code/espurna/terminal.cpp index 1fafcc39..aed3b0f5 100644 --- a/code/espurna/terminal.cpp +++ b/code/espurna/terminal.cpp @@ -118,6 +118,7 @@ struct TerminalIO final : public Stream { _read = _write; } + // TODO: allow DEBUG_SUPPORT=0 :/ size_t write(const uint8_t* bytes, size_t size) override { #if DEBUG_SUPPORT debugSendBytes(bytes, size); @@ -562,6 +563,7 @@ void _terminalInitCommands() { void _terminalLoop() { + // TODO: custom Stream input, don't depend on debug logging output as input #if DEBUG_SERIAL_SUPPORT while (DEBUG_PORT.available()) { _io.inject(DEBUG_PORT.read()); diff --git a/code/espurna/wifi.cpp b/code/espurna/wifi.cpp index fc1589d9..9b114741 100644 --- a/code/espurna/wifi.cpp +++ b/code/espurna/wifi.cpp @@ -23,6 +23,7 @@ Copyright (C) 2021 by Maxim Prokhorov #include #include +#include #include #include